2011-07-18 6 views
4

私はこのように、Dictionary<string, string>インスタンスがあるとします文字列から文字列への辞書を表すXMLスキーマとは何ですか?

{{ "A"、 "1"}、{ "B"、 "2"}}

でそれを表現する方法はいくつかありXML:

<root> 
    <item> 
    <key>a</key> 
    <value>1</value> 
    </item> 
    <item> 
    <key>b</key> 
    <value>2</value> 
    </item> 
</root> 

OR

<root> 
    <item key="a" value="1"/> 
    <item key="b" value="2"/> 
</root> 

OR

<root> 
    <a>1</a> 
    <b>2</b> 
</root> 

各表現を説明するXMLスキーマとは何ですか?

ありがとうございました。

+0

のIDEから妥当なスキーマを生成するツールを持っています入力ドキュメント。このような質問には即座に答えが出ます。 –

+0

残念ながら、私はどちらも持っていません。 – mark

+0

3番目の表現には文字列を使用できないことに注意してください(要素名には制限があります)。キー数が限られている場合にのみ有効です。また、異なる言語で値を追加する場合など、2番目のスキーマを拡張するのに問題があります。最初のソリューションは重くて柔軟性があります。 – Damien

答えて

3

xs:unique要素をご覧ください。第1回XML適切なXSDについては は次のとおりです。第二のために

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="root"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element maxOccurs="unbounded" name="item"> 
        <xs:complexType> 
         <xs:sequence> 
          <xs:element name="key" type="xs:string" /> 
          <xs:element name="value" type="xs:string" /> 
         </xs:sequence> 
        </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
     </xs:complexType> 

     <xs:unique name="uniqueItem"> 
      <xs:selector xpath="item"/> 
      <xs:field xpath="key"/> 
     </xs:unique> 
    </xs:element> 
</xs:schema> 

:第3回については

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="root"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element maxOccurs="unbounded" name="item"> 
        <xs:complexType> 
         <xs:attribute name="key" type="xs:string" use="required" /> 
         <xs:attribute name="value" type="xs:string" use="required" /> 
        </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
     </xs:complexType> 

     <xs:unique name="uniqueItem"> 
      <xs:selector xpath="item"/> 
      <xs:field xpath="@key"/> 
     </xs:unique> 

    </xs:element> 
</xs:schema> 

:酸素やスタイラスStudioなど

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="root"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="a" type="xs:string" /> 
       <xs:element name="b" type="xs:string" /> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 
+0

+1 2つのスキーマ。 3番目はどうですか?それは私にとって最もコンパクトなので、最も魅力的です。 – mark

+0

@mark、私は私の答えを更新しました。 –

+0

これは唯一の方法ですか?すべてのキーを明示的に表示しますか?要素の名前がキーであると言う方法はありませんか? – mark

関連する問題