我正在设计一个 XML 参考书目并考虑如何捕获发布日期。对于我正在处理的大多数作品(书籍),出版日期仅包含年份,但对于某些(期刊文章)是年和月,而对于其他(报纸文章)是年、月和日。
为简单起见,我想使用单个元素来包含所有这三个变体。研究规范(http://www.w3.org/TR/xmlschema-2/上的附录 D.2 ),我发现如果我的元素是日期数据类型,我不能只省略日期和/或我不需要它们的月份(ISO 8601 允许您这样做的方式),因为这些表示用于不同的数据类型(分别为gYearMonth和gYear)。
但是我可以对不需要的值使用零吗?像这样:
<pubdate>2009-04-00</pubdate>
<pubdate>2007-00-00</pubdate>
该规范明确禁止将“0000”作为年份值(附录 D.3),但没有以任何方式说明月份和日期的零。
我怀疑我的问题的答案是否定的,因为日期值应该对应于正好一天的时间间隔(规范第 3.2.9 节)。但我仍然想问,既要确保我不会不必要地放弃有效的方法,而且因为我还没有在其他地方看到这个确切的问题。
我发现的最接近的是:http: //www.biglist.com/lists/xsl-list/archives/200408/msg00297.html。提出的一种解决方案是为日期的每个部分创建一个属性,如果我不能像上面建议的那样使用零,我最终可能会这样做。当然,欢迎更好的想法。