在xml中,规范内置了ID IDREF和IDREFS类型。应该将IDREF和IDREFS直接绑定到ID值,如果每个IDREF值都不具有对应的ID值,则架构验证将失败。
在我自己滚动之前,我想知道java(或apache)是否已经创建了一些东西来创建符合ID格式的ID值。如果您不熟悉规范ID值,则必须遵循xml标记名称相同的规则:
[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
[5] Name ::= NameStartChar (NameChar)*
生成UUID几乎可以使我们到达那里,但是以数字开头的uuid会引起问题。显然,一个简单的实现是在Guid前面加上任何NameStartChar值。本着标准化的精神,是否有常用的功能?
最佳答案
我还没有找到一个-但您可以执行以下操作:
public static String generateId() {
long now = System.currentTimeMillis();
long randomLong = random.nextLong();
return ("ID_" + now + "-" + randomLong);
}