102

xmlファイルの1つをスキーマジェネレーターで実行しましたが、生成されたものはすべて、1つのノードを除いて期待どおりでした。

<xs:element name="office" type="xs:NCName"/>

正確には何xs:NCNameですか?そして、なぜそれを使うのでしょうxs:stringか?

4

4 に答える 4

117

@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は、後でNCNameに表示される可能性がありますが、数字、ドット、またはマイナス文字で始めることはできません。@$%&/+,;

NCNameはどこに必要ですか

名前空間に準拠したXMLドキュメントでは、すべての名前は修飾名またはNCNameのいずれかである必要があります。次の値はNCNamesである必要があります(修飾名ではありません)。

  • 名前空間プレフィックス
  • IDを表す値
  • IDREFを表す値
  • 表記を表す値
  • 処理命令ターゲット
  • エンティティ名
于 2011-05-28T01:00:05.820 に答える
97

NCNameは、「name」などのコロニー化されていない名前です。「ns:name」などの修飾名であるQNameと比較。名前が異なる名前空間で修飾されていない場合、それらはNCNameです。

xs:stringは名前にまったく制限を設けませんが、xs:NCNameは基本的に、文字列に「:」を表示することを許可しません。

于 2009-10-27T15:11:16.967 に答える
30

実際に言えば...

許可 -される文字:、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、._ 0_ 1_ 2_ 3_ 4_ 5_ 6_ 7_ 8_ 9_ A_ B_ C_ D_ E_ F_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 、、、、、、、、、、_ _ _ _ _ _ _GHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopq、、、、、、、、、、、、r_ s_ t_ u_ v_ w_ x_ y_z

また、-.の最初の文字として使用することはできません。

許可!ていない文字:、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _"#$%&'()*+,/:;<=>?@[\]^`{|}~

于 2013-06-05T20:17:12.030 に答える
7

http://books.xmlschemata.org/relaxng/ch19-77215.html

スペースやコロンはありません。「_」と「-」を許可します。

文字列の代わりにこれを使用して、値が許可されているものに制限されていることを検証できるようにします。たとえば、djangoの「スラッグ」の概念など、名前/識別子の特定の規則にうまく対応します。

[\i-[:]][\c-[:]]*私は私たちのために英語に翻訳する人に賛成します。

于 2011-05-26T16:54:56.867 に答える