xmlファイルの1つをスキーマジェネレーターで実行しましたが、生成されたものはすべて、1つのノードを除いて期待どおりでした。
<xs:element name="office" type="xs:NCName"/>
正確には何xs:NCName
ですか?そして、なぜそれを使うのでしょうxs:string
か?
xmlファイルの1つをスキーマジェネレーターで実行しましたが、生成されたものはすべて、1つのノードを除いて期待どおりでした。
<xs:element name="office" type="xs:NCName"/>
正確には何xs:NCName
ですか?そして、なぜそれを使うのでしょうxs:string
か?
@skylは実際に私にこの答えを書くように促したので、冗長性に注意してください。
NCName
「非植民地名」の略です。NCNameは、XMLスキーマの正規表現として定義できます。[\i-[:]][\c-[:]]*
\i
および\c
は、XMLスキーマ定義で定義された複数文字のエスケープです。
http://www.w3.org/TR/xmlschema-2/#dt-ccesN
\i
は、初期XML名文字のセットのエスケープであり、XML名文字\c
のセットです。 コロン文字で構成されるセットを除く、セットで構成される[\i-[:]]
セットを意味します。したがって、平易な英語では、「最初の文字は意味しますが、そうではありません」という意味になります。正規表現全体は、「1つの初期XML名文字であり、コロンではなく、その後に0個以上のXML名文字が続くが、コロンではない」と読み取られます。\i
:
:
NCNameの実際の制限は、、、、、、、、、、、、、空白文字、または異なる括弧など:
の複数の記号文字を含めることができないことです。さらに、NCNameは、後でNCNameに表示される可能性がありますが、数字、ドット、またはマイナス文字で始めることはできません。@
$
%
&
/
+
,
;
名前空間に準拠したXMLドキュメントでは、すべての名前は修飾名またはNCNameのいずれかである必要があります。次の値はNCNamesである必要があります(修飾名ではありません)。
NCNameは、「name」などのコロニー化されていない名前です。「ns:name」などの修飾名であるQNameと比較。名前が異なる名前空間で修飾されていない場合、それらはNCNameです。
xs:stringは名前にまったく制限を設けませんが、xs:NCNameは基本的に、文字列に「:」を表示することを許可しません。
実際に言えば...
許可 -
される文字:、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、.
_ 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-[:]]*
私は私たちのために英語に翻訳する人に賛成します。