有没有办法在java中生成xsd:ID值?

时间:2012-01-24 21:13:03

标签: java xml

在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几乎让我们在那里,但是以数字开头的uuids会导致问题。显然,一个简单的实现将为guid添加任何NameStartChar值。本着标准化的精神,有没有常用的功能?

3 个答案:

答案 0 :(得分:1)

我还没找到 - 但你可以这样做:

public static String generateId() {
    long now = System.currentTimeMillis();
    long randomLong = random.nextLong();
    return ("ID_" + now + "-" + randomLong);
}

答案 1 :(得分:1)

您也可以使用UUID类。

String id = "id_" + UUID.randomUUID().toString();

答案 2 :(得分:0)

我通常只使用一些前缀+一个递增的序号。 UUID是全球唯一的,在文档中,当您保持整数唯一时,很容易确保"customprefix"+integer是唯一的。