mirror of
https://github.com/xiaoqidun/ofdgo.git
synced 2026-10-29 13:56:32 +08:00
1 parent
53769b65ab
commit
492adccb81
35 files changed
+1182
-239
No files matched your search
@@ -14,6 +14,8 @@
|
||||
|
||||
package ofdgo
|
||||
|
||||
import "unicode/utf8"
|
||||
|
||||
// 旧版与2016版OFD命名空间
|
||||
const (
|
||||
ofdNamespaceLegacy = "http://www.ofdspec.org"
|
||||
@@ -46,3 +48,28 @@ func classifyOFDNamespace(namespace string) ofdXMLNamespace {
|
||||
return ofdXMLUnknown
|
||||
}
|
||||
}
|
||||
|
||||
// ofdXMLIDValid 按XML 1.0的NCName规则校验xs:ID,不用于数值型ST_ID
|
||||
// 入参: id 标识
|
||||
// 返回: bool 是否有效
|
||||
func ofdXMLIDValid(id string) bool {
|
||||
if id == "" || !utf8.ValidString(id) {
|
||||
return false
|
||||
}
|
||||
for i, c := range id {
|
||||
if c == '_' || c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z' ||
|
||||
c >= 0xC0 && c <= 0xD6 || c >= 0xD8 && c <= 0xF6 ||
|
||||
c >= 0xF8 && c <= 0x2FF || c >= 0x370 && c <= 0x37D ||
|
||||
c >= 0x37F && c <= 0x1FFF || c >= 0x200C && c <= 0x200D ||
|
||||
c >= 0x2070 && c <= 0x218F || c >= 0x2C00 && c <= 0x2FEF ||
|
||||
c >= 0x3001 && c <= 0xD7FF || c >= 0xF900 && c <= 0xFDCF ||
|
||||
c >= 0xFDF0 && c <= 0xFFFD || c >= 0x10000 && c <= 0xEFFFF {
|
||||
continue
|
||||
}
|
||||
if i == 0 || !(c == '-' || c == '.' || c >= '0' && c <= '9' ||
|
||||
c == 0xB7 || c >= 0x300 && c <= 0x36F || c >= 0x203F && c <= 0x2040) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
Reference in new issue
Block a user