Что такое схема XML для представления словаря строка-строка? - PullRequest
4 голосов
/ 18 июля 2011

Предположим, у меня есть экземпляр Dictionary<string, string>, например:

{{"a", "1"}, {"b", "2"}}

ТамЕсть несколько способов представить его в XML:

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

ИЛИ

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

ИЛИ

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

Какая схема XML описывает каждое представление?

Спасибо.

1 Ответ

3 голосов
/ 18 июля 2011

Посмотрите на элемент 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>

Для 2-го:

<?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>

Для 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 name="a" type="xs:string" />
                <xs:element name="b" type="xs:string" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...