-
Proposal:
Hide
Amend 19:916 xml:id to add the following:
The value of an xml:id attribute is preserved over the existence of a document instance.
The Value for an xml:id attribute is never reused in a document instance.
The value of an xml:id is: "odf" followed by a unique 32-bit number.
Show
Amend 19:916 xml:id to add the following:
The value of an xml:id attribute is preserved over the existence of a document instance.
The Value for an xml:id attribute is never reused in a document instance.
The value of an xml:id is: "odf" followed by a unique 32-bit number.
Currently, xml:ids (19:914) are not required to be stable over the lifetime of a document. So long as an application maintains the links established by use of xml:ids and serializes those, it is free to generate or save xml:ids it encounters.
That approach was adopted before the first TC meeting on 16 December 2002. (https://lists.oasis-open.org/archives/tc-announce/200211/msg00001.html) A few days before that, PC Magazine reported its editor's choice for the year:
"Dell Dimension 8250 - 2.8-Ghz Pentium 4, 512 RDRAM, 7,210-rpm 200GB hard drive, ATI Radeon 9700 Pro graphics card, DVD-ROM and DVD-RW drives, two USB L1 and six USB 2.0 ports, one FireWire port, 18-inch LCD. (Brown, Bruce. PC Magazine. 12/3/2002, Vol. 21 Issue 21, p102. 9p. 4 Color Photographs, 9 Charts.)"
As of December, 2011, PC Magazine reported its editor's choice as:
"HP Pavilion p7-1167cb - 3.1GHz Intel Core i5-2400 processor, 8GB of RAM, 7200-rpm 1TB hard drive, AMD Radeon HD 6450 (512MB) discrete graphics card, DVD+-RW, four USB 2.0 ports, audio-in and -out, a mic jack, Ethernet, and VGA and DVI-D video outputs, 25-inch LCD monitor (HP 2511x). (Shoemaker, Natalie. PC Magazine. Dec2011, Vol. 30 Issue 12, p1-1. 1p.)"
I suspect this is one of those decisions that was influenced by our appreciation of the hardware capabilities implementers would face while implementing ODF. The change in "average" hardware is enough to merit reconsideration of the stability of xml:ids.
Benefits from stable xml:ids:
1) Stable reference points for change tracking
2) Detection of non-change tracked deletions (operation pointer no longer has a target)
3) Centralized change tracking (request only operations after timestamp or xml:id sequence)
4) Changes to changes by different applications detectable but not resolved by ODF.
Not to mention that stable xml:ids would be an incentive to fix all the referencing in ODF 1.3 to use xml:ids and not names, etc.
I have proposed using a 32-bit number below as that allows addressing up to 4,294,967,295 items. There is a lot of experience with compressing 32-bit numbers. Should we bump that up to 64? Just to avoid revisiting the issue any time soon?
I prepended odf to the string to meet the requirements of NCNAME in XML Schema Part 2, Datatypes, http://www.w3.org/TR/xmlschema-2/#ID
{"report":{"apdex":1,"isInitial":true,"journeyId":"68602f74-5472-490f-a41b-4e7760be5d65","key":"jira.project.issue.view-issue","navigationType":0,"readyForUser":528.1000003814697,"redirectCount":0,"resourceLoadedEnd":538.6000003814697,"resourceLoadedStart":122.60000038146973,"resourceTiming":[{"duration":4.899999618530273,"initiatorType":"link","name":"https://issues.oasis-open.org/s/3edeca31ab9ba77980aae0809fbe7121-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/0a4716d29b2d5b1bdcdb168b4efc119e/_/download/contextbatch/css/_super/batch.css","startTime":122.60000038146973,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":122.60000038146973,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":127.5,"responseStart":0,"secureConnectionStart":0},{"duration":5.599999904632568,"initiatorType":"link","name":"https://issues.oasis-open.org/s/7d2823769c2e7b66e860863fe879b7f8-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/9aebb1c0aaa4c36289529757ec9dbb54/_/download/contextbatch/css/project.issue.navigator,jira.view.issue,jira.global,atl.general,-_super/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&richediton=true","startTime":122.90000009536743,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":122.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":128.5,"responseStart":0,"secureConnectionStart":0},{"duration":6.099999904632568,"initiatorType":"link","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/8.0.5/_/download/batch/com.atlassian.auiplugin:split_aui.pattern.label/com.atlassian.auiplugin:split_aui.pattern.label.css","startTime":123.10000038146973,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":123.10000038146973,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":129.2000002861023,"responseStart":0,"secureConnectionStart":0},{"duration":6,"initiatorType":"link","name":"https://issues.oasis-open.org/s/645acc233eb869f48a571293b8358a7d-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:global-static-adgs/jira.webresources:global-static-adgs.css","startTime":123.30000019073486,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":123.30000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":129.30000019073486,"responseStart":0,"secureConnectionStart":0},{"duration":6.400000095367432,"initiatorType":"link","name":"https://issues.oasis-open.org/s/a0dd6509771c1de0667aae5429c04cda-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:global-static/jira.webresources:global-static.css","startTime":123.40000009536743,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":123.40000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":129.80000019073486,"responseStart":0,"secureConnectionStart":0},{"duration":47.90000009536743,"initiatorType":"script","name":"https://issues.oasis-open.org/s/e5479157e7a0c08b005e6522f2f04104-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/0a4716d29b2d5b1bdcdb168b4efc119e/_/download/contextbatch/js/_super/batch.js?locale=en-US","startTime":123.7000002861023,"connectEnd":123.7000002861023,"connectStart":123.7000002861023,"domainLookupEnd":123.7000002861023,"domainLookupStart":123.7000002861023,"fetchStart":123.7000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":123.7000002861023,"responseEnd":171.60000038146973,"responseStart":171.5,"secureConnectionStart":123.7000002861023},{"duration":66.69999980926514,"initiatorType":"script","name":"https://issues.oasis-open.org/s/83514d5d4e8543747b02042eafcdc99c-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/9aebb1c0aaa4c36289529757ec9dbb54/_/download/contextbatch/js/project.issue.navigator,jira.view.issue,jira.global,atl.general,-_super/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en-US&richediton=true","startTime":124.30000019073486,"connectEnd":124.30000019073486,"connectStart":124.30000019073486,"domainLookupEnd":124.30000019073486,"domainLookupStart":124.30000019073486,"fetchStart":124.30000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":124.30000019073486,"responseEnd":191,"responseStart":191,"secureConnectionStart":124.30000019073486},{"duration":68.59999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/s/70bb2263e59e7e1f04fbd137c80b895b-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/aae1242f5fc81cc6a5bb8bc963ccda29/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en-US","startTime":124.40000009536743,"connectEnd":124.40000009536743,"connectStart":124.40000009536743,"domainLookupEnd":124.40000009536743,"domainLookupStart":124.40000009536743,"fetchStart":124.40000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":124.40000009536743,"responseEnd":193,"responseStart":193,"secureConnectionStart":124.40000009536743},{"duration":68.89999961853027,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":124.60000038146973,"connectEnd":124.60000038146973,"connectStart":124.60000038146973,"domainLookupEnd":124.60000038146973,"domainLookupStart":124.60000038146973,"fetchStart":124.60000038146973,"redirectEnd":0,"redirectStart":0,"requestStart":124.60000038146973,"responseEnd":193.5,"responseStart":193.5,"secureConnectionStart":124.60000038146973},{"duration":69.09999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":124.7000002861023,"connectEnd":124.7000002861023,"connectStart":124.7000002861023,"domainLookupEnd":124.7000002861023,"domainLookupStart":124.7000002861023,"fetchStart":124.7000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":124.7000002861023,"responseEnd":193.80000019073486,"responseStart":193.80000019073486,"secureConnectionStart":124.7000002861023},{"duration":69.09999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/s/cda37faab827dbdf305de8efe8282062-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/8.0.5/_/download/batch/com.atlassian.auiplugin:split_aui.pattern.label/com.atlassian.auiplugin:split_aui.pattern.label.js?locale=en-US","startTime":124.90000009536743,"connectEnd":124.90000009536743,"connectStart":124.90000009536743,"domainLookupEnd":124.90000009536743,"domainLookupStart":124.90000009536743,"fetchStart":124.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":124.90000009536743,"responseEnd":194,"responseStart":194,"secureConnectionStart":124.90000009536743},{"duration":69.39999961853027,"initiatorType":"link","name":"https://issues.oasis-open.org/s/07245784f53abc49bad9d9d4d36c577a-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/cadc4f20cc5c138dee060d42cf85f220/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":125.10000038146973,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":125.10000038146973,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":194.5,"responseStart":0,"secureConnectionStart":0},{"duration":69.09999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/rest/api/1.0/shortcuts/803004/a29179d70fa8562374ee16707692af77/shortcuts.js?context=issuenavigation&context=issueaction","startTime":125.30000019073486,"connectEnd":125.30000019073486,"connectStart":125.30000019073486,"domainLookupEnd":125.30000019073486,"domainLookupStart":125.30000019073486,"fetchStart":125.30000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":125.30000019073486,"responseEnd":194.40000009536743,"responseStart":194.40000009536743,"secureConnectionStart":125.30000019073486},{"duration":39.19999980926514,"initiatorType":"link","name":"https://issues.oasis-open.org/s/f77fd89aa211a76b20e9b0e63564383c-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/4a9288299d147101bf66484f4be48925/_/download/contextbatch/css/com.atlassian.jira.projects.sidebar.init,-_super,-jira.view.issue,-project.issue.navigator/batch.css?jira.create.linked.issue=true&richediton=true","startTime":155.7000002861023,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":155.7000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":194.90000009536743,"responseStart":0,"secureConnectionStart":0},{"duration":39.09999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/s/41525c48ddceeb9b11e54085268fc285-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/4a9288299d147101bf66484f4be48925/_/download/contextbatch/js/com.atlassian.jira.projects.sidebar.init,-_super,-jira.view.issue,-project.issue.navigator/batch.js?jira.create.linked.issue=true&locale=en-US&richediton=true","startTime":155.90000009536743,"connectEnd":155.90000009536743,"connectStart":155.90000009536743,"domainLookupEnd":155.90000009536743,"domainLookupStart":155.90000009536743,"fetchStart":155.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":155.90000009536743,"responseEnd":195,"responseStart":195,"secureConnectionStart":155.90000009536743},{"duration":39.09999990463257,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":165.2000002861023,"connectEnd":165.2000002861023,"connectStart":165.2000002861023,"domainLookupEnd":165.2000002861023,"domainLookupStart":165.2000002861023,"fetchStart":165.2000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":165.2000002861023,"responseEnd":204.30000019073486,"responseStart":204.2000002861023,"secureConnectionStart":165.2000002861023},{"duration":128.19999980926514,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":186.2000002861023,"connectEnd":186.2000002861023,"connectStart":186.2000002861023,"domainLookupEnd":186.2000002861023,"domainLookupStart":186.2000002861023,"fetchStart":186.2000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":186.2000002861023,"responseEnd":314.40000009536743,"responseStart":314.40000009536743,"secureConnectionStart":186.2000002861023},{"duration":23.90000009536743,"initiatorType":"xmlhttprequest","name":"https://issues.oasis-open.org/rest/webResources/1.0/resources","startTime":377.40000009536743,"connectEnd":377.40000009536743,"connectStart":377.40000009536743,"domainLookupEnd":377.40000009536743,"domainLookupStart":377.40000009536743,"fetchStart":377.40000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":377.40000009536743,"responseEnd":401.30000019073486,"responseStart":401.30000019073486,"secureConnectionStart":377.40000009536743},{"duration":48.69999980926514,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/be9ff0efea54a6453d2ac60b92912a09/_/download/contextbatch/js/browser-metrics-plugin.contrib,-_super,-project.issue.navigator,-jira.view.issue,-atl.general/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&richediton=true","startTime":473.80000019073486,"connectEnd":473.80000019073486,"connectStart":473.80000019073486,"domainLookupEnd":473.80000019073486,"domainLookupStart":473.80000019073486,"fetchStart":473.80000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":473.80000019073486,"responseEnd":522.5,"responseStart":522.5,"secureConnectionStart":473.80000019073486},{"duration":51.30000019073486,"initiatorType":"script","name":"https://issues.oasis-open.org/s/8dbb665766273a8e5e49159503d3c6a9-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/ea7e7a11d1f628533837874704f9a54d/_/download/contextbatch/js/jira.rich.editor.api,jira.rich.editor,-_super,-jira.view.issue,-jira.global,-atl.general,-project.issue.navigator/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en-US&richediton=true","startTime":474.30000019073486,"connectEnd":474.30000019073486,"connectStart":474.30000019073486,"domainLookupEnd":474.30000019073486,"domainLookupStart":474.30000019073486,"fetchStart":474.30000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":474.30000019073486,"responseEnd":525.6000003814697,"responseStart":525.5,"secureConnectionStart":474.30000019073486}],"threshold":1000,"fetchStart":0,"domainLookupStart":17,"domainLookupEnd":17,"connectStart":17,"connectEnd":66,"secureConnectionStart":41,"requestStart":66,"responseStart":115,"responseEnd":186,"domLoading":118,"domInteractive":580,"domContentLoadedEventStart":581,"domContentLoadedEventEnd":626,"domComplete":708,"loadEventStart":708,"loadEventEnd":710,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[],"measures":[],"correlationId":"7c7d0d3f69e25d","effectiveType":"4g","downlink":9.3,"rtt":0,"serverDuration":94,"dbReadsTimeInMs":11,"dbConnsTimeInMs":14,"applicationHash":"4d4040e0714d65b7fffa4801569d014c0b16eaa9","experiments":[]}}
@Andreas.
Applications, as per my example document last night, already preserve data across edits. We require that and yet a number of implementations seem to achieve that requirement.
How are xml:ids any different?
Preservation is "implementation dependent" on how an implementation persists them. That is the requirement is persistence, how you do that is undefined. Mechanism of persistence is undefined by the standard.
Do you mean xml:id or preservation of an identifier?