假设我有一个包含以下字段的数据库表:
关于如何将数据库字段名称转换为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名称是可以的。
有时使用的一种约定是将不允许的字符替换为_XX_
XX ,即XX是其十六进制的Unicode代码点。
如你的示例中那样,生成camelCase是另一种可能的方法,它提供了更具可读性的名称,但是当然不能保证结果名称将是唯一的。
感谢,所以
Last Name
这将是:<Last Name>
?抱歉,我的回答写错了。建议是用来
_20_
表示一个空间。 
XML名称中不允许使用空格,空格除外。