回答:
@skylは実際に私にこの答えを書くように促しましたので、冗長性に注意してください。
NCName
「コロンなしの名前」を表します。NCNameは、XMLスキーマの正規表現として定義できます。[\i-[:]][\c-[:]]*
\i
そして、\c
XMLスキーマ定義で定義された複数文字のエスケープです。
http://www.w3.org/TR/xmlschema-2/#dt-ccesN
\i
は、一連の初期XML名文字のエスケープであり、XML名文字\c
のセットです。 [\i-[:]]
は\i
、コロン文字で構成されるセットを除く、セットで構成されるセットを意味します:
。つまり、わかりやすい英語では、「最初の文字はすべてではなく:
」という意味になります。正規表現全体は、「コロンではなく最初の1つのXML名文字、その後に0個以上のXML名文字が続きますが、コロンはありません」と読みます。
NCNameでの現実的な制限が、それはのようないくつかの記号文字を含めることはできませんということです:
、@
、$
、%
、&
、/
、+
、,
、;
、空白文字または別の括弧。さらに、NCNameは数字、ドット、またはマイナス文字で始めることはできませんが、それらは後でNCNameに出現できます。
名前空間に準拠したXMLドキュメントでは、すべての名前が修飾名またはNCNameである必要があります。以下の値は、NCNames(修飾名ではない)である必要があります。
実際に言えば...
使用できる文字: -
、.
、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
また、-
および.
値の最初の文字として使用することはできません。
許可されていない文字: 、
!
、"
、#
、$
、%
、&
、'
、(
、)
、*
、+
、,
、/
、:
、;
、<
、=
、>
、?
、@
、[
、\
、]
、^
、`
、{
、|
、}
、~
http://books.xmlschemata.org/relaxng/ch19-77215.html
スペースやコロンは不要です。「_」と「-」を使用できます。
文字列の代わりにこれを使用して、値が許可されているものに制限されていることを検証できるようにします。たとえば、djangoの「スラッグ」の概念など、名前/識別子の特定の規則にうまく対応します。
私は[\i-[:]][\c-[:]]*
英語に翻訳する人に賛成票を投じます。
[\i-[:]][\c-[:]]*
英語に翻訳する回答を追加しました。あなたが約束したように、先に進んで
xs:NCName