Warm tip: This article is reproduced from serverfault.com, please click

schema-建议的将数据库字段名称编码为XML标记的方法

(schema - Suggested way to encode a DB field name to an XML tag)

发布于 2020-11-30 00:37:37

假设我有一个包含以下字段的数据库表:

  • 年龄

关于如何将数据库字段名称转换为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]```

我相信大多数数据库源都具有与XML类似的限制,尽管space通常允许使用a。也许最简单的方法是:

<Table Name="Person">
    <Row>
        <Field name="Age">...</Field>
        <Field name="First Name">...</Field>
        <Field name="Last Name">...</Field>
    </Row>
</Table>

但是我认为这使事情变得一团糟,并将一个半直觉的XML文档变成了一个“转义文档”。是否有有关如何进行此转换/转换的建议指南?我想到的想法(尽管不是“最安全的”)是根据XML char规范对它进行处理:

<Persons> <!-- pluralize? -->
    <Person>
        <Age>...</Age>
        <FirstName>...</FirstName>
        <LastName>...</LastName>
    </Person>
</Persons>

我想这对于asci名称是可以的。

Questioner
David542
Viewed
0
Michael Kay 2020-12-03 03:43:15

有时使用的一种约定是将不允许的字符替换为_XX_XX 即XX是其十六进制的Unicode代码点。

如你的示例中那样,生成camelCase是另一种可能的方法,它提供了更具可读性的名称,但是当然不能保证结果名称将是唯一的。