Câu trả lời:
NCName là tên không thuộc địa hóa, ví dụ "tên". So với QName là tên đủ điều kiện, ví dụ "ns: name". Nếu tên của bạn không được cho là đủ điều kiện bởi các không gian tên khác nhau, thì chúng là NCNames.
xs: string không hạn chế tên của bạn, nhưng về cơ bản xs: NCName không cho phép ":" xuất hiện trong chuỗi.
@skyl thực tế đã kích động tôi viết câu trả lời này nên xin hãy nhớ về phần dư thừa.
NCName
là viết tắt của "tên không thuộc địa". NCName có thể được định nghĩa là một biểu thức chính quy của Lược đồ XML[\i-[:]][\c-[:]]*
\i
và \c
là các thoát nhiều ký tự được định nghĩa trong định nghĩa Lược đồ XML.
http://www.w3.org/TR/xmlschema-2/#dt-ccesN
\i
là lối thoát cho tập các ký tự tên XML ban đầu và \c
là tập các ký tự tên XML. [\i-[:]]
nghĩa là một tập hợp bao gồm tập hợp \i
không bao gồm một tập hợp bao gồm ký tự dấu hai chấm :
. Vì vậy, trong tiếng Anh đơn giản, nó có nghĩa là "bất kỳ ký tự đầu tiên nào, nhưng không phải :
". Toàn bộ biểu thức chính quy đọc là "Một ký tự tên XML đầu tiên, nhưng không phải dấu hai chấm, theo sau là không hoặc nhiều ký tự tên XML, nhưng không phải là dấu hai chấm."
Các hạn chế thực tế của NCName là rằng nó không thể chứa một số nhân vật biểu tượng như :
, @
, $
, %
, &
, /
, +
, ,
, ;
, khoảng trắng hoặc ký tự ngoặc khác nhau. Hơn nữa, NCName không thể bắt đầu bằng một số, dấu chấm hoặc ký tự trừ mặc dù chúng có thể xuất hiện sau đó trong NCName.
Trong các tài liệu XML tuân thủ không gian tên, tất cả các tên phải là tên đủ điều kiện hoặc tên NCN. Các giá trị sau phải là NCNames (không phải tên đủ điều kiện):
Nói thực tế...
Ký tự cho phép: -
, .
, 0
, 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
, A
, B
, C
, D
, E
, F
, G
, H
, I
, J
, K
, L
, M
, N
, O
, P
, Q
, R
, S
, T
, U
, V
, W
, X
, Y
, Z
, _
, a
, b
, c
, d
, e
, f
, g
, h
, i
, j
, k
, l
, m
, n
, o
, p
,q
, r
, s
, t
, u
, v
, w
, x
, y
,z
Ngoài ra, -
và .
không thể được sử dụng làm ký tự đầu tiên của giá trị.
Ký tự không được phép: ,
!
, "
, #
, $
, %
, &
, '
, (
, )
, *
, +
, ,
, /
, :
, ;
, <
, =
, >
, ?
, @
, [
, \
, ]
, ^
, `
, {
, |
, }
,~
http://books.xmlschemata.org/relaxng/ch19-77215.html
Không có dấu cách hoặc dấu hai chấm. Cho phép "_" và "-".
Bạn sẽ sử dụng chuỗi này thay vì chuỗi để bạn có thể xác nhận rằng giá trị được giới hạn ở những gì được phép. Nó ánh xạ tốt đến các quy ước nhất định cho tên / định danh như khái niệm "slug" của django chẳng hạn.
Tôi ủng hộ người [\i-[:]][\c-[:]]*
dịch sang tiếng Anh cho chúng tôi.
[\i-[:]][\c-[:]]*
sang tiếng Anh. Hãy tiếp tục và ủng hộ, như bạn đã hứa;)
xs:NCName