The definition of the 2 date ranges (1900-9999 and 1904-1999) is unnecessarily restrictive. Dates prior to 1900 (or 1904) will be considered “ill-formed” and therefore not valid. Historical dates should not be disregarded.
Adopt ISO 8601 which sufficiently caters for a wider historical range of dates
Page 2522 (2528) Part 4, Section 3.17.4.1
te
Proposed Disposition of DIS 29500 Comment MY-0003 (Modified: 2008-01-13) We agree that it is important for SpreadsheetML to support ISO 8601, and we propose the following changes to allow dates in the ISO 8601 format. These changes update the description of date and time representation within SpreadsheetML. They also add the necessary schema to support the added format, and they provide examples of using ISO 8601 dates in SpreadsheetML. Additionally, there was a request to remove one of the existing serial date base systems, but in order to maintain compatibility with the existing corpus of binary documents, those date bases will remain in the specification and will be discussed in more detail in the response to dispositions CL-0014, CL-0015, CL-0172, CO-0155, CZ-0008, DE-0030, DE-0032, DE-0072, DE-0073, DK-0136, FR-0183, FR-0352, GB-0301, GB-0305, GR-0004, GR-0005, GR-0007, IN-0058, IN-0062, IR-0002, KE-0055, PE-0003, PH-0005, SG-0002, US-0131, US-0134, ZA-0014. Changes to Part 4, §3.17.4, page 2,522, lines 511: 3.17.4 Dates and Times Each unique instant in SpreadsheetML time is represented as either: an ISO 8601 formatted string, which is made up of a date component, time component, and timezone component. a distinct non-negative numeric serial value, which is made up of an integer date component and a fractional time component. As dates and times are numeric values, they can take part in arithmetic operations. [Note: For readability of SpreadsheetML, it is recommended that the ISO 8601 format be used for representation of dates and times. end note] Numerous functions take as arguments one or more serial values or strings representing dates and/or times. Functions that care only about the date shall ignore any time information that is provided. Functions that care only about the time shall ignore any date information that is provided. Dates and times can take part in arithmetic operations. [Example: The date 22 November 1976 at exactly 08:30 Pacific Standard Time (+08:00 UTC) could be represented in the following ways within SpreadsheetML. Note that this is not an exhaustive list of the representations: 1976-11-22T08:30:00,000+08:00 1976-11-22T16:30Z 28086.68750… end example] Changes to Part 4, §3.17.4.1, page 2,522, line 12: 3.17.4.1 Date Representation for Serial Values Changes to Part 4, §3.17.4.2, page 2,523, line 21: 3.17.4.2 Time Representation for Serial Values Changes to Part 4, §3.17.4.3, page 2,523, line 35: 3.17.4.3 Combined Date and Time Representation for Serial Values Changes to Part 4, §3.17.6.7, page 2,529, line 27 through page 2,530, line 5: 3.17.6.7 Dates and Times As a date and/or time can be is represented by either an ISO 8601 string or a number, a date/time serial value shall be stored in XML as either the ISO 8601 string the unformatted serial value form of that number, as accurately as possible. All dates and times shall be stored relative to UTC and shall be assumed as UTC dates and times unless specified by inclusion of timezone information as designated by ISO 8601. The date base system is recorded in the Workbook part’s XML by the presence or absence of the date1904 attribute of the workbookPr element. A value of 1 for this attribute indicates 1904. [Example: 1900: <workbookPr showObjects="all"/> 1904: <workbookPr date1904="1" showObjects="all"/> end example] Changes to Part 4, §3.3.1.3, page 2,038, lines 921: 3.3.1.93 v (Cell Value) This element expresses the value contained in a cell. If the cell contains a string, then this value is an index into the shared string table, pointing to the actual string value. Otherwise, the value of the cell is expressed directly in this element. Cells containing formulas express the last calculated result of the formula in this element. For applications not wanting to implement the shared string table, an ‘inline string’ may be expressed in an <is> element under <c> (instead of a <v> element under <c>),in the same way a string would be expressed in the shared string table. See <is> for an example. [Example: In this example cell B4 contains the number "360" and C4 contains the UTC date 22 November 1976, 08:30 . <c r="B4"> <v>360</v> </c> <c r="C4" t="d"> <v>1976-11-22T08:30Z</v> </c> end example] The possible values for this element are defined by the ST_Xstring simple type (§3.18.96). Parent Elements c (§3.3.1.3); cell (§3.14.1); nc (§3.11.1.3); oc (§3.11.1.5); tp (§3.15.3) Changes to Part 4, §3.18.12, page 2,840, line 19 through page 2,841, line 0: 3.18.12 ST_CellType (Cell Type) Indicates the cell’s data type. This simple type’s contents are a restriction of the XML Schema string datatype. The following are possible enumeration values for this type: Enumeration Value Description b (Boolean) Cell containing a boolean. d (Date) Cell contains a date in the ISO 8601 format e (Error) Cell containing an error. inlineStr (Inline String) Cell containing an (inline) rich string, i.e., one not in the shared string table. If this cell type is used, then the cell value is in the is element rather than the v element in the cell (c element). Enumeration Value Description n (Number) Cell containing a number. s (Shared String) Cell containing a shared string. str (String) Cell containing a formula string. Changes to Part 4 §3.3.2.5, page 2,047, line 11 through page 2,048, line 6: 3.3.2.5 dynamicFilter (Dynamic Filter) This collection specifies dynamic filter criteria. These criteria are considered dynamic because they can change, either with the data itself (e.g., "above average") or with the current system date (e.g., show values for "today"). For any cells whose values do not meet the specified criteria, the corresponding rows shall be hidden from view when the fitler is applied. [Example: <filterColumn colId="0"> <dynamicFilter type="today"/> </filterColumn> end example] Parent Elements filterColumn (§3.3.2.7) Attributes Description maxVal (Max Value) A maximum value for dynamic filter. It maxVal/maxValIso shall be required for today, yesterday, tomorrow, nextWeek, thisWeek, lastWeek, nextMonth, thisMonth, lastMonth, nextQuarter, thisQuarter, lastQuarter, nextYear, thisYear, lastYear, and yearToDate. The above criteria are based on a value range. For example, if today’s date is September 22nd, then the range for thisWeek is the values greater than or equal to September 17 and less than September 24. In the thisWeek range, the lower value is expressed using val or valIso . The higher value is expressed using maxVal or maxValIso . These dynamic filter shall not require val /valIso / or maxVal /maxValIso : Q1, Q2, Q3, Q4, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11 and M12. The above criteria shall not specify the range using val /valIso and Attributes Description maxVal /maxValIso because Q1 always starts from M1 to M3, and M1 is always January. These types of dynamic filters shall use val /valIso and shall not use maxVal /maxValIso : aboveAverage and belowAverage If maxValIso and maxVal are both present, maxValIso shall take precedence. The possible values for this attribute are defined by the XML Schema double datatype. maxValIso (Max ISO Value) A maximum value for dynamic filter. maxVal/maxValIso shall be required for today, yesterday, tomorrow, nextWeek, thisWeek, lastWeek, nextMonth, thisMonth, lastMonth, nextQuarter, thisQuarter, lastQuarter, nextYear, thisYear, lastYear, and yearToDate. The above criteria are based on a value range; that is, if today’s date is September 22nd, then the range for thisWeek is the values greater than or equal to September 17 and less than September 24. In the thisWeek range, the lower value is expressed using val or valIso. The higher value is expressed using maxVal of maxValIso. These dynamic filters shall not require val/valIso or maxVal/maxValIso: Q1, Q2, Q3, Q4, M1, M2, M3, M4, M5, M6, M7, M8, M9, M10, M11 and M12. The above criteria shall not specify the range using val/valIso and maxVal/maxValIso because Q1 always starts from M1 to M3, and M1 is always January. These types of dynamic filters shall use val/valIso and shall not use maxVal/maxValIso: aboveAverage and belowAverage If maxValIso and maxVal are both present, maxValIso shall take precedence. The possible values for this attribute are defined by the XML Schema dateTime datatype. type (Dynamic filter type) Dynamic filter type, e.g., “today” or “nextWeek”. The possible values for this attribute are defined by the ST_DynamicFilterType simple type (§3.18.27). val (Value) A minimum value for dynamic filter. See description of maxVal /maxValIso to understand when val is required. If valIso and val are both present, valIso shall take precedence. Attributes Description The possible values for this attribute are defined by the XML Schema double datatype. valIso (ISO Value) A minimum value for dynamic filter. (See description of maxVal/maxValIso to understand when valIso is required.) If valIso and val are both present, valIso shall take precedence. The possible values for this attribute are defined by the XML Schema dateTime datatype. The following XML Schema fragment defines the contents of this element: <complexType name="CT_DynamicFilter"> <attribute name="type" type="ST_DynamicFilterType" use="required"/> <attribute name="val" type="xsd:double" use="optional"/> <attribute name="valIso" type="xsd:dateTime" use="optional"/> <attribute name="maxVal" type="xsd:double" use="optional"/> <attribute name="maxValIso" type="xsd:dateTime" use="optional"/> </complexType> Changes to Part 4 §3.10.1.67, page 2,323, line 8 through 2,328, line 34: 3.10.1.67 pivotCacheDefinition (PivotCache Definition) Represents the pivotCacheDefinition part. This part defines each field in the source data, including the name, the string resources of the instance data (for shared items), and information about the type of data that appears in the field. [Example: <pivotCacheDefinition xmlns="…" xmlns:r="…" r:id="rId1" refreshedBy="AnonUser" refreshedDate="2006-05-22T10:07:16 Z " createdVersion="3" refreshedVersion="3" minRefreshableVersion="3" recordCount="182"> <cacheSource type="worksheet"> <worksheetSource name="Table1"/> </cacheSource> <cacheFields count="28"> <cacheField name="Customer Name" numFmtId="0"> <cacheField name="Postal Code" numFmtId="0"> <sharedItems/> </cacheField> <cacheField name="Product Category" numFmtId="0"> <sharedItems count="1"> <s v="Bikes"/> </sharedItems> </cacheField> <cacheField name="Year" numFmtId="0"> <sharedItems count="1"> <s v="2001"/> </sharedItems> </cacheField> <cacheField name="Quarter" numFmtId="0"> <sharedItems containsSemiMixedTypes="0" containsString="0" containsNumber="1" containsInteger="1" minValue="3" maxValue="3" count="1"> <n v="3"/> </sharedItems> </cacheField> </cacheFields> </pivotCacheDefinition> end example] Parent Elements Root element of SpreadsheetML Pivot Table Cache Definition part Child Elements Subclause cacheFields (PivotCache Fields) §3.10.1.4 cacheHierarchies (PivotCache Hierarchies) §3.10.1.5 cacheSource (PivotCache Source Description) §3.10.1.7 calculatedItems (Calculated Items) §3.10.1.9 calculatedMembers (Calculated Members) §3.10.1.11 dimensions (OLAP Dimensions) §3.10.1.25 extLst (Future Feature Data Storage Area) §3.2.10 kpis (OLAP KPIs) §3.10.1.48 maps (OLAP Measure Group) §3.10.1.52 measureGroups (OLAP Measure Groups) §3.10.1.54 tupleCache (Tuple Cache) §3.10.1.94 Attributes Description Attributes Description backgroundQuery (Background Query) Specifies a boolean value that indicates whether the application should query and retrieve records asynchronously from the cache. A value of on , 1 , or true indicates the application will retrieve records asynchronously from the cache. A value of off , 0 , or false indicates the application will retrieve records synchronously. The possible values for this attribute are defined by the XML Schema boolean datatype. createdVersion (PivotCache Created Version) Specifies the version of the application that created the cache. This attribute is application-dependent. The possible values for this attribute are defined by the XML Schema unsignedByte datatype. enableRefresh (Enable PivotCache Refresh) Specifies a boolean value that indicates whether the end-user can refresh the cache. This attribute depends on whether the application exposes a method for allowing end-users control over refreshing the cache via the user interface. A value of on , 1 , or true indicates the end-user can refresh the cache. A value of off , 0 , or false indicates the end-user cannot refresh the cache. The possible values for this attribute are defined by the XML Schema boolean datatype. id (Relationship Identifier) Namespace: …/officeDocument/2006/relationships Specifies the unique identifier that corresponds to the related pivotCacheRecords part. See (§3.10.1.68) for more information. The possible values for this attribute are defined by the ST_RelationshipId simple type (§7.8.2.1). invalid (Invalid Cache) Specifies a boolean value that indicates whether the cache is invalid and needs to be refreshed. A value of on , 1 , or true indicates the cache is invalid and needs to be refreshed. A value of off , 0 , or false indicates the cache does not need to be refreshed. Attributes Description The possible values for this attribute are defined by the XML Schema boolean datatype. minRefreshableVersion (Minimum Version Required for Refresh) Specifies the earliest version of the application that is required to refresh the cache. This attribute is application-dependent. The possible values for this attribute are defined by the XML Schema unsignedByte datatype. missingItemsLimit (Missing Items Limit) Specifies the number of unused items to allow before discarding unused items. This attribute is application-dependent. The application must specify a threshold for unused items. The possible values for this attribute are defined by the XML Schema unsignedInt datatype. optimizeMemory (Optimize Cache for Memory) Specifies a boolean value that indicates whether the application will apply optimizations to the cache to reduce memory usage. This attribute is application-dependent. This application must define its own cache optimization methods. The application must also decide whether to expose cache optimization status via the user interface or an object model. A value of on , 1 , or true indicates the application will apply optimizations to the cache. A value of off , 0 , or false indicates the application will not apply optimizations to the cache. The possible values for this attribute are defined by the XML Schema boolean datatype. recordCount (PivotCache Record Count) Specifies the number of records in the cache. The possible values for this attribute are defined by the XML Schema unsignedInt datatype. refreshedBy (Last Refreshed By) Specifies the name of the end-user who last refreshed the cache. This attribute is application-dependent and is specified by applications that track and store the identity of the current user. This attribute also depends on whether the application exposes mechanisms via the user interface whereby the end-user can refresh the cache. The possible values for this attribute are defined by the ST_Xstring simple type (§3.18.96). refreshedDate (PivotCache Last Specifies the date when the cache was last refreshed. This Attributes Description Refreshed Date) attribute depends on whether the application exposes mechanisms via the user interface whereby the end-user can refresh the cache. If refreshedDateIso and refreshedDate are both present, refreshedDateIso shall take precedence. The possible values for this attribute are defined by the XML Schema double datatype. refreshedDateIso (PivotCache Last Refreshed Date ISO) Specifies the date when the cache was last refreshed. This attribute depends on whether the application exposes mechanisms via the user interface whereby the end-user can refresh the cache. If refreshedDateIso and refreshedDate are both present, refreshedDateIso shall take precedence. The possible values for this attribute are defined by the XML Schema dateTime datatype. refreshedVersion (PivotCache Last Refreshed Version) Specifies the version of the application that last refreshed the cache. This attribute depends on whether the application exposes mechanisms via the user interface whereby the end-user can refresh the cache. The possible values for this attribute are defined by the XML Schema unsignedByte datatype. refreshOnLoad (Refresh On Load) Specifies a boolean value that indicates whether the application will refresh the cache when the workbook has been opened. A value of on , 1 , or true indicates that application will refresh the cache when the workbook is loaded. A value of off , 0 , or false indicates the application will not automatically refresh cached data. The end user must trigger refresh of the cache manually via the application user interface. The possible values for this attribute are defined by the XML Schema boolean datatype. saveData (Save Pivot Records) Specifies a boolean value that indicates whether the pivot records are saved with the cache. A value of on , 1 , or true indicates pivot records are saved in the cache. Attributes Description A value of off , 0 , or false indicates are not saved in the cache. The possible values for this attribute are defined by the XML Schema boolean datatype. supportAdvancedDrill (Supports Attribute Drilldown) Specifies whether the cache’s data source supports attribute drilldown. The possible values for this attribute are defined by the XML Schema boolean datatype. supportSubquery (Supports Subqueries) Specifies whether the cache’s data source supports subqueries. The possible values for this attribute are defined by the XML Schema boolean datatype. tupleCache (Stores Cache for OLAP Functions) Specifies a boolean value that indicates whether the PivotCache is used store information for OLAP sheet data functions. A value of on , 1 , or true indicates information about OLAP sheet data functions are stored in the cache. A value of off , 0 , or false indicates the PivotCache does not contain information about OLAP sheet data functions. The possible values for this attribute are defined by the XML Schema boolean datatype. upgradeOnRefresh (Upgrade PivotCache on Refresh) Specifies a boolean value that indicates whether the cache is scheduled for version upgrade. This attribute depends on whether the application exposes mechanisms via the user interface whereby the cache may be upgraded. A value of on , 1 , or true indicates the cache is scheduled for upgrade. A value of off , 0 , or false indicates the cache is not scheduled for upgrade. The possible values for this attribute are defined by the XML Schema boolean datatype. The following XML Schema fragment defines the contents of this element: <complexType name="CT_PivotCacheDefinition"> <sequence> <element name="cacheSource" type="CT_CacheSource" minOccurs="1" maxOccurs="1"/> <element name="cacheFields" type="CT_CacheFields" minOccurs="1" maxOccurs="1"/> <element name="cacheHierarchies" minOccurs="0" type="CT_CacheHierarchies"/> <element name="kpis" minOccurs="0" type="CT_PCDKPIs"/> <element name="tupleCache" minOccurs="0" type="CT_TupleCache"/> <element name="calculatedItems" minOccurs="0" type="CT_CalculatedItems"/> <element name="calculatedMembers" type="CT_CalculatedMembers" minOccurs="0"/> <element name="dimensions" type="CT_Dimensions" minOccurs="0"/> <element name="measureGroups" type="CT_MeasureGroups" minOccurs="0"/> <element name="maps" type="CT_MeasureDimensionMaps" minOccurs="0"/> <element name="extLst" minOccurs="0" type="CT_ExtensionList"/> </sequence> <attribute ref="r:id" use="optional"/> <attribute name="invalid" type="xsd:boolean" use="optional" default="false"/> <attribute name="saveData" type="xsd:boolean" use="optional" default="true"/> <attribute name="refreshOnLoad" type="xsd:boolean" use="optional" default="false"/> <attribute name="optimizeMemory" type="xsd:boolean" use="optional" default="false"/> <attribute name="enableRefresh" type="xsd:boolean" use="optional" default="true"/> <attribute name="refreshedBy" type="ST_Xstring" use="optional"/> <attribute name="refreshedDate" type="xsd:double" use="optional"/> <attribute name="refreshedDateIso" type="xsd:dateTime" use="optional"/> <attribute name="backgroundQuery" type="xsd:boolean" default="false"/> <attribute name="missingItemsLimit" type="xsd:unsignedInt" use="optional"/> <attribute name="createdVersion" type="xsd:unsignedByte" use="optional" default="0"/> <attribute name="refreshedVersion" type="xsd:unsignedByte" use="optional" default="0"/> <attribute name="minRefreshableVersion" type="xsd:unsignedByte" use="optional" default="0"/> <attribute name="recordCount" type="xsd:unsignedInt" use="optional"/> <attribute name="upgradeOnRefresh" type="xsd:boolean" use="optional" default="false"/> <attribute name="tupleCache" type="xsd:boolean" use="optional" default="false"/> <attribute name="supportSubquery" type="xsd:boolean" use="optional" default="false"/> <attribute name="supportAdvancedDrill" type="xsd:boolean" use="optional" default="false"/> </complexType> Similar Comments: AU-0017 , CA-0046 , CH-0009 , CL-0014 , CL-0145 , CO-0157 , DE-0028 , DK-0166 , FI-0012 , FR-0176 , GB-0368 , GR-0023 , IE-0003 , IN-0074 , KR-0019 , MT-0002 , MX-0004 , MY-0002 , MY-0004 , MY-0005

Dupe of IE 2