Welcome to the tZaman project 
tZaman - XML Property Specifications
tHome tBerkeleyDB tDOM tMySQL tXSchema tXQuery tZaman
 
 
HomeC  Home
OverviewC  Overview
OpenIssuesC  Open Issues
DesignC  Design Doc
JavaDocC  Java Doc
DownloadC  Download
PeopleC  People
 

Property Table

The <propertyTable> element encloses a list of properties. Each <property> can be specified in a single tag, or can enclose a list of <value>s, as shown below.
   <propertyTable>
      <property name = "..."/>
        <value>...</value>
      </property>
        .
        .
      <property name = "..." value = "..."/>
        .
        .
   </propertyTable>

Locale

The locale property identifies the location of user (useful for timezone conversions). An example is given below.
 <property name = "locale" value = "Tucson"/> 

Instant Input Format

The Instant Input Format property is used in the parsing of instant temporal literals. Below are listed some examples of temporal literals.
  • September 2000
  • September 23, 2000
  • <day>23</day> <other month="September" year="2000"/>
  •     <date> 
           <month value = "Jan"/>
           <day value = "1"/>
           <year> 1970 </year>
        </date> 
    
The <format> element specifies the general structure of the literal, and idenfities "variable" parts of the literal. The variables are denoted with a $ prefixed, as in XQuery or Perl. The part of the literal matching the variable will be extracted into the variable and then further checked to ensure that it is a proper value by looking it up in a field value tables. Inputs can vary a lot. An attribute in the format stipulates whether an arbitrary amount of whitespace is accepted. Below is an example of a complete format property.
  <property name="instant input format">
    <value>
      <format>$month $year</format>
      <format whitespace="no">$month $day, $year</format>
      <format> <day>$day</day> 
        <other month="$month" year="$year"/> 
      </format>

<fieldInfo variable="month" name="month of year" using = "englishMonthNames"/> <fieldInfo variable="day" name="day of month" using="arabicNumeral"/> <fieldInfo variable="year" name="year" using="arabicNumeral"/> </value> </property>

The "whitespace" attribute in <format> is set to "no", so the format is not white-space friendly.

A temporal literal will be parsed using the structure in the <format>. If the structure matches, then the value of the variables (called a <field> will extracted and compared to the value in the corresponding field value table. A more complete discussion on the parsing and handling of format properties is given elsewhere.

Instant Output Format

This property has a similar format to the Instant Input Format. The one difference is there is no need to include a whitespace attribute. This is same with all other output format properties.

Interval Input Format

An interval is a duration of time. Example of interval literals are given below.
  • <other> <month> 5 </month> </other>
  • <other> <month value ="5" /> </other>
  • 2 years
<property name = "interval input format">
  <value>
    <!-- this is the default format for inputs like last example above -->
    <format> $year </format>
    <format> $month months </format>
    <format whitespace = "no">$month months</format>
    <format> <other month = "$monthName"/> </format>

<fieldInfo variable="monthName" name="month" using="englishMonthNames"/> <fieldInfo variable="month" name="month" using="arabicNumeral"/> <fieldInfo variable="year" name="year" using="arabicNumeral"/> </value> </property>

Interval Output Format

The interval output format is similar to the interval input format (see above).

Now-Relative Instant Input Format

<property name = "now relative instant input format">
  <value>
    <format> $now $direction $interval </format> 

<!-- refers to property now, name is the name of the property --> <fieldInfo parseValue = "now" name = "now" url = "*.xml"/>

<!-- refers to property interval input format --> <importFormat parseValue = "interval" name = "interval input format" url = "*.xml"/> <!-- direction might be either addition "+" or subtraction "-" --> <fieldInfo variable = "direction" name = "directions" using = "directionList"/> </value> </property>

Now-Relative Instant Output Format

Similar to the input format.

Period Input Format

Examples period temporal literals are listed below.

  • [ 1776 ]
  • [ July, 1776 )
  • [ Noon July 3, 1776, Noon July 4, 1970 )
  • <period> [ <other day = "1" month = "Jan" year = "1970"/> , <other> <day value ="2"/> <month value = "Jan"/> <year value= "1970"/> </other> ] </period>

A period format often consists of two instant formats.

<property name = "period input format">
  <value>
    <format whitespace = "no">
       $leftClosed $instantStart, $instantEnd $rightClosed 
    </format>
    <format> 
       <period> $leftOpen $instantStart, $instantEnd $rightClosed </period>
    </format>

<importFormat parseValue = "instantStart" name = "instant input format" url = "*.xml"/> <importFormat parseValue = "instantEnd" name = "instant input format" url = "*.xml"/>

<fieldInfo variable = "leftClosed" name = "instant period delimiter" using = "periodDelimiterList"/> <fieldInfo variable = "leftOpen" name = "instant period delimiter" using = "periodDelimiterList"/>

<fieldInfo variable = "rightClosed" name = "instant period delimiter" using = "periodDelimiterList"/> </value> </property>

By using <importFormat> we can specify the instant input format to parse the instants in a period. If the parsing includes indeterminate instants, then indeterminate periods are also handled.

Period Output Format

Similar to input.

Indeterminate Instant Input Format

An indeterminate format can include a "distribution". Examples of indeterminate literals are given below.
  • Jan, 1, 1970 ~ Jan, 2, 1970
  • <date> <month value = "Jan"/> <day value = "1"/> <year> 1970 </year> </date> ~ Jan, 2, 1970
  • Jan, 1, 1970 ~ Jan, 2, 1970 with uniform distribution

<property name = "indeterminate instant input format">
  <value>

<format> $lower ~ $upper </format>

<format> $lower ~ $upper with $distribution distribution </format>

<importFormat parseValue = "lower" name = "instant input format" url = "*.xml"/>

<importFormat parseValue = "upper" name = "instant input format" url = "*.xml"/> <!-- Distribution might be optional --> <fieldInfo variable = "distribution" name = "distribution" using = "distributionNames"/> </value> </property>

Indeterminate Instant Output Format

Similar to input.

Override Input Epoch

This property sets the input epoch.
<property name = "override input epoch" value = "gregorian"/>

                                                                                                                                     

 
E-mail questions or comments to Curtis Dyreson