Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAtsushi Eno <atsushieno@gmail.com>2005-12-26 17:16:44 +0300
committerAtsushi Eno <atsushieno@gmail.com>2005-12-26 17:16:44 +0300
commitbf5bf0e19ff1dbb8be770f3827ac897e93407f5d (patch)
tree88ef662fe4f52e5ba4c809dcadebcbe7ddf06cb3 /mcs/class/System.XML
parent2f6ed89c7f222d78ba82a703f1fb86851fce64d0 (diff)
2005-12-26 Atsushi Enomoto <atsushi@ximian.com>
* XsdValidatingReader.cs : Fixed the bug that only the last * schema URL in a schemaLocation was processed. Patch by Vorobiev Maksim. * XsdValidatingReaderTests.cs : test for multi URLs in schemaLocation. Test by Vorobiev Maskim. * multi-schemaLocation.xml, x-net-config-storage-factory-provider-schema.xsd, x-net-config-schema.xsd : test support files for XsdValidatingReaderTests .MultipleSchemaInSchemaLocation() by Vorobiev Maskim. svn path=/trunk/mcs/; revision=54848
Diffstat (limited to 'mcs/class/System.XML')
-rw-r--r--mcs/class/System.XML/Mono.Xml.Schema/ChangeLog5
-rw-r--r--mcs/class/System.XML/Mono.Xml.Schema/XsdValidatingReader.cs34
-rw-r--r--mcs/class/System.XML/Test/System.Xml/ChangeLog5
-rw-r--r--mcs/class/System.XML/Test/System.Xml/XsdValidatingReaderTests.cs9
-rw-r--r--mcs/class/System.XML/Test/XmlFiles/xsd/1.xsd84
-rw-r--r--mcs/class/System.XML/Test/XmlFiles/xsd/2.xsd22
-rw-r--r--mcs/class/System.XML/Test/XmlFiles/xsd/3.xsd22
-rw-r--r--mcs/class/System.XML/Test/XmlFiles/xsd/4.xsd22
-rw-r--r--mcs/class/System.XML/Test/XmlFiles/xsd/5.xsd28
-rw-r--r--mcs/class/System.XML/Test/XmlFiles/xsd/6.xsd30
-rw-r--r--mcs/class/System.XML/Test/XmlFiles/xsd/ChangeLog8
-rw-r--r--mcs/class/System.XML/Test/XmlFiles/xsd/multi-schemaLocation.xml38
-rw-r--r--mcs/class/System.XML/Test/XmlFiles/xsd/x-net-config-schema.xsd115
-rw-r--r--mcs/class/System.XML/Test/XmlFiles/xsd/x-net-config-storage-factory-provider-schema.xsd76
-rw-r--r--mcs/class/System.XML/Test/XmlFiles/xsd/xml.xsd52
15 files changed, 405 insertions, 145 deletions
diff --git a/mcs/class/System.XML/Mono.Xml.Schema/ChangeLog b/mcs/class/System.XML/Mono.Xml.Schema/ChangeLog
index fbbb3f208fb..1f45f1b132c 100644
--- a/mcs/class/System.XML/Mono.Xml.Schema/ChangeLog
+++ b/mcs/class/System.XML/Mono.Xml.Schema/ChangeLog
@@ -1,3 +1,8 @@
+2005-12-26 Atsushi Enomoto <atsushi@ximian.com>
+
+ * XsdValidatingReader.cs : Fixed the bug that only the last schema
+ URL in a schemaLocation was processed. Patch by Vorobiev Maksim.
+
2005-12-12 Atsushi Enomoto <atsushi@ximian.com>
* XsdValidatingReader.cs : it is not IXmlNamespaceResolver anymore.
diff --git a/mcs/class/System.XML/Mono.Xml.Schema/XsdValidatingReader.cs b/mcs/class/System.XML/Mono.Xml.Schema/XsdValidatingReader.cs
index b326fc104cb..056adeeaa1d 100644
--- a/mcs/class/System.XML/Mono.Xml.Schema/XsdValidatingReader.cs
+++ b/mcs/class/System.XML/Mono.Xml.Schema/XsdValidatingReader.cs
@@ -1487,28 +1487,32 @@ namespace Mono.Xml.Schema
if (tmp.Length % 2 != 0)
if (schemas.Count == 0)
HandleError ("Invalid schemaLocation attribute format.");
- for (int i = 0; i < tmp.Length; i += 2) {
+ int i=0;
+ do {
try {
- schema = ReadExternalSchema (tmp [i + 1]);
- } catch (Exception) { // FIXME: (wishlist) It is bad manner ;-(
+ for (; i < tmp.Length; i += 2) {
+ schema = ReadExternalSchema (tmp [i + 1]);
+ if (schema.TargetNamespace == null)
+ schema.TargetNamespace = tmp [i];
+ else if (schema.TargetNamespace != tmp [i])
+ HandleError ("Specified schema has different target namespace.");
+ if (schema != null) {
+ if (!schemas.Contains (schema.TargetNamespace)) {
+ schemaAdded = true;
+ schemas.Add (schema);
+ }
+ schema = null;
+ }
+ }
+ } catch (Exception) {
if (!schemas.Contains (tmp [i]))
HandleError (String.Format ("Could not resolve schema location URI: {0}",
i + 1 < tmp.Length ? tmp [i + 1] : String.Empty), null, true);
+ i += 2;
continue;
}
- if (schema.TargetNamespace == null)
- schema.TargetNamespace = tmp [i];
- else if (schema.TargetNamespace != tmp [i])
- HandleError ("Specified schema has different target namespace.");
- }
- }
- if (schema != null) {
- if (!schemas.Contains (schema.TargetNamespace)) {
- schemaAdded = true;
- schemas.Add (schema);
- }
+ } while (i < tmp.Length);
}
- schema = null;
string noNsSchemaLocation = reader.GetAttribute ("noNamespaceSchemaLocation", XmlSchema.InstanceNamespace);
if (noNsSchemaLocation != null) {
try {
diff --git a/mcs/class/System.XML/Test/System.Xml/ChangeLog b/mcs/class/System.XML/Test/System.Xml/ChangeLog
index 9b967590c2e..78e50b7b722 100644
--- a/mcs/class/System.XML/Test/System.Xml/ChangeLog
+++ b/mcs/class/System.XML/Test/System.Xml/ChangeLog
@@ -1,3 +1,8 @@
+2005-12-26 Atsushi Enomoto <atsushi@ximian.com>
+
+ * XsdValidatingReaderTests.cs : test for multi URLs in
+ schemaLocation. Test by Vorobiev Maskim.
+
2005-12-26 Gert Driesen <drieseng@users.sourceforge.net>
* XmlElementTests.cs: Fixed line endings.
diff --git a/mcs/class/System.XML/Test/System.Xml/XsdValidatingReaderTests.cs b/mcs/class/System.XML/Test/System.Xml/XsdValidatingReaderTests.cs
index be1bb7f516c..6846a6b70a3 100644
--- a/mcs/class/System.XML/Test/System.Xml/XsdValidatingReaderTests.cs
+++ b/mcs/class/System.XML/Test/System.Xml/XsdValidatingReaderTests.cs
@@ -227,5 +227,14 @@ namespace MonoTests.System.Xml
vr.Read (); // bug
AssertEquals ("#4", "urn:a", vr.NamespaceURI);
}
+
+ [Test]
+ public void MultipleSchemaInSchemaLocation ()
+ {
+ XmlTextReader xtr = new XmlTextReader ("Test/XmlFiles/xsd/multi-schemaLocation.xml");
+ XmlValidatingReader vr = new XmlValidatingReader (xtr);
+ while (!vr.EOF)
+ vr.Read ();
+ }
}
}
diff --git a/mcs/class/System.XML/Test/XmlFiles/xsd/1.xsd b/mcs/class/System.XML/Test/XmlFiles/xsd/1.xsd
index b12b3bcab62..d8cf5a46e7a 100644
--- a/mcs/class/System.XML/Test/XmlFiles/xsd/1.xsd
+++ b/mcs/class/System.XML/Test/XmlFiles/xsd/1.xsd
@@ -1,42 +1,42 @@
-<xs:schema
- xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns="urn:bar"
- targetNamespace="urn:bar"
->
-
-<xs:element name="Foo" type="xs:string" />
-<xs:element name="Bar" type="FugaType" />
-<xs:element name="Baz">
- <xs:simpleType>
- <xs:list itemType="xs:int" />
- </xs:simpleType>
-</xs:element>
-
-<xs:element name="Blah">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="Foo" />
- <xs:element ref="Bar" />
- <xs:element ref="Baz" />
- </xs:sequence>
- </xs:complexType>
-</xs:element>
-
-<xs:complexType name="FugaType">
- <xs:complexContent>
- <xs:extension base="HogeType">
- <xs:sequence>
- <xs:element name="Baz" type="xs:string" />
- </xs:sequence>
- </xs:extension>
- </xs:complexContent>
-</xs:complexType>
-
-<xs:complexType name="HogeType">
- <xs:sequence>
- <xs:element ref="Foo" />
- <xs:element ref="Bar" />
- </xs:sequence>
-</xs:complexType>
-
-</xs:schema>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="urn:bar"
+ targetNamespace="urn:bar"
+>
+
+<xs:element name="Foo" type="xs:string" />
+<xs:element name="Bar" type="FugaType" />
+<xs:element name="Baz">
+ <xs:simpleType>
+ <xs:list itemType="xs:int" />
+ </xs:simpleType>
+</xs:element>
+
+<xs:element name="Blah">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="Foo" />
+ <xs:element ref="Bar" />
+ <xs:element ref="Baz" />
+ </xs:sequence>
+ </xs:complexType>
+</xs:element>
+
+<xs:complexType name="FugaType">
+ <xs:complexContent>
+ <xs:extension base="HogeType">
+ <xs:sequence>
+ <xs:element name="Baz" type="xs:string" />
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+</xs:complexType>
+
+<xs:complexType name="HogeType">
+ <xs:sequence>
+ <xs:element ref="Foo" />
+ <xs:element ref="Bar" />
+ </xs:sequence>
+</xs:complexType>
+
+</xs:schema>
diff --git a/mcs/class/System.XML/Test/XmlFiles/xsd/2.xsd b/mcs/class/System.XML/Test/XmlFiles/xsd/2.xsd
index 7e640228c0a..26be201885b 100644
--- a/mcs/class/System.XML/Test/XmlFiles/xsd/2.xsd
+++ b/mcs/class/System.XML/Test/XmlFiles/xsd/2.xsd
@@ -1,11 +1,11 @@
-<xs:schema
- xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns="urn:bar"
- targetNamespace="urn:bar"
->
-
-<!-- just for flag deserialization -->
-<xs:element name="Foo" type="xs:string" block="extension" />
-<xs:element name="Bar" type="xs:string" block="extension restriction" />
-
-</xs:schema>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="urn:bar"
+ targetNamespace="urn:bar"
+>
+
+<!-- just for flag deserialization -->
+<xs:element name="Foo" type="xs:string" block="extension" />
+<xs:element name="Bar" type="xs:string" block="extension restriction" />
+
+</xs:schema>
diff --git a/mcs/class/System.XML/Test/XmlFiles/xsd/3.xsd b/mcs/class/System.XML/Test/XmlFiles/xsd/3.xsd
index b0d6700b6f5..d39df5bb123 100644
--- a/mcs/class/System.XML/Test/XmlFiles/xsd/3.xsd
+++ b/mcs/class/System.XML/Test/XmlFiles/xsd/3.xsd
@@ -1,11 +1,11 @@
-<xs:schema
- xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns="urn:bar"
- targetNamespace="urn:foo"
->
-
-<xs:import schemaLocation="4.xsd" namespace="urn:bar" />
-<xs:element name="Foo" type="xs:string" />
-<xs:element name="Bar" type="xs:string" />
-
-</xs:schema>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="urn:bar"
+ targetNamespace="urn:foo"
+>
+
+<xs:import schemaLocation="4.xsd" namespace="urn:bar" />
+<xs:element name="Foo" type="xs:string" />
+<xs:element name="Bar" type="xs:string" />
+
+</xs:schema>
diff --git a/mcs/class/System.XML/Test/XmlFiles/xsd/4.xsd b/mcs/class/System.XML/Test/XmlFiles/xsd/4.xsd
index 9139bd69eaf..b06c133df1c 100644
--- a/mcs/class/System.XML/Test/XmlFiles/xsd/4.xsd
+++ b/mcs/class/System.XML/Test/XmlFiles/xsd/4.xsd
@@ -1,11 +1,11 @@
-<xs:schema
- xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns="urn:bar"
- targetNamespace="urn:bar"
->
-
-<!-- to be included from 3.xsd -->
-<xs:element name="Foo" type="xs:int" />
-<xs:element name="Bar" type="xs:int" />
-
-</xs:schema>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="urn:bar"
+ targetNamespace="urn:bar"
+>
+
+<!-- to be included from 3.xsd -->
+<xs:element name="Foo" type="xs:int" />
+<xs:element name="Bar" type="xs:int" />
+
+</xs:schema>
diff --git a/mcs/class/System.XML/Test/XmlFiles/xsd/5.xsd b/mcs/class/System.XML/Test/XmlFiles/xsd/5.xsd
index 49d78a8afc6..38738123bd6 100644
--- a/mcs/class/System.XML/Test/XmlFiles/xsd/5.xsd
+++ b/mcs/class/System.XML/Test/XmlFiles/xsd/5.xsd
@@ -1,14 +1,14 @@
-<xs:schema
- xmlns:xs="http://www.w3.org/2001/XMLSchema"
- targetNamespace="urn:bar"
->
-
-<xs:element name="Foo">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Bar" form="unqualified" />
- </xs:sequence>
- </xs:complexType>
-</xs:element>
-
-</xs:schema>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="urn:bar"
+>
+
+<xs:element name="Foo">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Bar" form="unqualified" />
+ </xs:sequence>
+ </xs:complexType>
+</xs:element>
+
+</xs:schema>
diff --git a/mcs/class/System.XML/Test/XmlFiles/xsd/6.xsd b/mcs/class/System.XML/Test/XmlFiles/xsd/6.xsd
index 8448b81b207..2d5e3605ab8 100644
--- a/mcs/class/System.XML/Test/XmlFiles/xsd/6.xsd
+++ b/mcs/class/System.XML/Test/XmlFiles/xsd/6.xsd
@@ -1,15 +1,15 @@
-<xs:schema
- xmlns:xs="http://www.w3.org/2001/XMLSchema"
- targetNamespace="urn:bar"
- elementFormDefault="unqualified"
->
-
-<xs:element name="Foo">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Bar" form="qualified" />
- </xs:sequence>
- </xs:complexType>
-</xs:element>
-
-</xs:schema>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="urn:bar"
+ elementFormDefault="unqualified"
+>
+
+<xs:element name="Foo">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Bar" form="qualified" />
+ </xs:sequence>
+ </xs:complexType>
+</xs:element>
+
+</xs:schema>
diff --git a/mcs/class/System.XML/Test/XmlFiles/xsd/ChangeLog b/mcs/class/System.XML/Test/XmlFiles/xsd/ChangeLog
index cca4c6dd8d2..3fa61cb1cd3 100644
--- a/mcs/class/System.XML/Test/XmlFiles/xsd/ChangeLog
+++ b/mcs/class/System.XML/Test/XmlFiles/xsd/ChangeLog
@@ -1,3 +1,11 @@
+2005-12-26 Atsushi Enomoto <atsushi@ximian.com>
+
+ * multi-schemaLocation.xml,
+ x-net-config-storage-factory-provider-schema.xsd,
+ x-net-config-schema.xsd :
+ test support files for XsdValidatingReaderTests
+ .MultipleSchemaInSchemaLocation() by Vorobiev Maskim.
+
2004-01-03 Atsushi Enomoto <atsushi@ximian.com>
* Added 2,3,4,5 and 6.xsd
diff --git a/mcs/class/System.XML/Test/XmlFiles/xsd/multi-schemaLocation.xml b/mcs/class/System.XML/Test/XmlFiles/xsd/multi-schemaLocation.xml
new file mode 100644
index 00000000000..1e89cd8e908
--- /dev/null
+++ b/mcs/class/System.XML/Test/XmlFiles/xsd/multi-schemaLocation.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="windows-1251"?>
+<xfw:configuration
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:xfw="http://www.croc.ru/Schemas/XmlFramework/Core/Config/1.0"
+ xmlns:xs="http://www.croc.ru/Schemas/XmlFramework/Core/Config/XStorageFactoryProvider/1.0"
+
+ xsi:schemaLocation="
+ http://www.croc.ru/Schemas/XmlFramework/Core/Config/1.0 x-net-config-schema.xsd
+ http://www.croc.ru/Schemas/XmlFramework/Core/Config/XStorageFactoryProvider/1.0 x-net-config-storage-factory-provider-schema.xsd
+ ">
+ <xfw:core debug-mode="true"/>
+ <xfw:storage>
+ <xfw:connections
+ storage-assembly="dgdfgfdg"
+ storage-class-name="dfgfdgdg"
+ >
+ <xfw:connection n="CommonConn" protected="1">
+ <xs:connection-string>
+ <xs:text>dfgdfg</xs:text>
+ </xs:connection-string>
+ </xfw:connection>
+ <xfw:connection n="ReadOnlyConn" protected="1">
+ <xs:connection-string>
+ <xs:text>dfgfgdfg</xs:text>
+ </xs:connection-string>
+ </xfw:connection>
+ </xfw:connections>
+ </xfw:storage>
+ <xfw:server-objects>
+ <xfw:file-name>fghfhfhg</xfw:file-name>
+ </xfw:server-objects>
+ <xfw:metadata>
+ <xfw:file-name>hfghfhg</xfw:file-name>
+ </xfw:metadata>
+ <AppData>
+ <AppVersion ver-major="1" ver-minor="0" build="0" />
+ </AppData>
+</xfw:configuration>
diff --git a/mcs/class/System.XML/Test/XmlFiles/xsd/x-net-config-schema.xsd b/mcs/class/System.XML/Test/XmlFiles/xsd/x-net-config-schema.xsd
new file mode 100644
index 00000000000..0eabc75838e
--- /dev/null
+++ b/mcs/class/System.XML/Test/XmlFiles/xsd/x-net-config-schema.xsd
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--W3C Schema generated by XMLSPY v5 rel. 2 U (http://www.xmlspy.com)-->
+<xsd:schema
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://www.croc.ru/Schemas/XmlFramework/Core/Config/1.0"
+ targetNamespace="http://www.croc.ru/Schemas/XmlFramework/Core/Config/1.0"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ version="1.0"
+>
+ <!-- ОПРЕДЕЛЕНИЕ КОРНЕВОГО ЭЛЕМЕНТА ФАЙЛА КОНФИГУРАЦИИ -->
+ <xsd:element name="configuration">
+ <xsd:complexType mixed="true">
+ <xsd:sequence>
+ <xsd:element name="core" minOccurs="0">
+ <xsd:complexType>
+ <xsd:attribute name="debug-mode" type="xsd:boolean"/>
+ <xsd:attribute name="protected" type="xsd:boolean"/>
+ <!--
+ Определяет режим работы Ядра в отладочном режиме; допустимые
+ значения "true" - Ядро работает в отладочном режиме, и "false" -
+ отладочный режим блокируется. Задание значения не обязательно;
+ по умолчанию используется "false".
+ -->
+ <!-- Содержание элемента может быть помечно как защищенное -->
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="storage" type="storageType"/>
+ <xsd:element name="server-objects">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="file-name" type="xsd:string" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="protected" type="xsd:boolean"/>
+ <!-- Содержание элемента может быть помечно как защищенное -->
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="metadata">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="file-name" type="xsd:string" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="protected" type="xsd:boolean"/>
+ <!-- Содержание элемента может быть помечно как защищенное -->
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ <!-- Определяет режим функционирования ядра -->
+ <!-- Элемент, задающий перечень используемых реализаций подсистемы Storage -->
+ <!-- (Его определение дано ниже) -->
+ <!-- Элемент, задающий файл описания прикладных элементов ядра -->
+ <!-- Элемент, задающий перечень файлов метаданных приложения -->
+ </xsd:sequence>
+ <xsd:attribute name="ver-major" type="xsd:int" default="1"/>
+ <xsd:attribute name="ver-minor" type="xsd:int" default="0"/>
+ <xsd:attribute name="build" type="xsd:int" default="1"/>
+ <xsd:attribute name="instance-guid" type="xsd:string"/>
+ <xsd:attribute name="protected" type="xsd:boolean"/>
+ <!--
+ В целом для приложения может быть задан номер версии, как триплет
+ номеров Major.Minor.Build. Номер версии используется механизмами
+ автоматической инсталляции и обновления.
+ Задание номера версии приложения не является обязательным.
+ -->
+ <!-- Номер версии (по умолчанию - 1) -->
+ <!-- Номер подверсии (по умолчанию - 0) -->
+ <!-- Номер сборки (приложения в целом, build; по умолчанию - 1) -->
+ <!--
+ Для конкретной инстанции конечного приложения может так же
+ задаваться уникальный номер (UUID) инстанции;
+ -->
+ <!-- Содержание элемента может быть помечно как защищенное -->
+ </xsd:complexType>
+ </xsd:element>
+ <!--
+ Элемент, задающий перечень используемых реализаций подсистемы Storage
+ -->
+ <xsd:complexType name="storageType">
+ <xsd:sequence>
+ <xsd:element name="connections" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="connection" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:any namespace="##other" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="n" type="xsd:NMTOKEN" use="required"/>
+ <xsd:attribute name="protected" type="xsd:boolean"/>
+ </xsd:complexType>
+ </xsd:element>
+ <!--
+ Элемент, задающий данные, используеме для инициализации соединения
+ с СУБД - строку соединения. Определения именованы - используется
+ атрибут n
+ -->
+ </xsd:sequence>
+ <xsd:attribute name="storage-assembly" type="xsd:string" use="required"/>
+ <xsd:attribute name="storage-class-name" type="xsd:string" use="required"/>
+ <xsd:attribute name="protected" type="xsd:boolean"/>
+ <!-- Задает наименование файла сборки с реализацией Storage -->
+ <!-- Задает наименование .NET-типа - класса реализации Storage -->
+ <!-- Содержание элемента может быть помечно как защищенное -->
+ </xsd:complexType>
+ <xsd:unique name="uniqueConnectionName">
+ <xsd:selector xpath="connection"/>
+ <xsd:field xpath="@n"/>
+ </xsd:unique>
+ </xsd:element>
+ <!-- Перечень должен включать как минимум одно определение -->
+ </xsd:sequence>
+ <xsd:attribute name="protected" type="xsd:boolean"/>
+ <!-- Содержание элемента может быть помечно как защищенное -->
+ </xsd:complexType>
+</xsd:schema>
diff --git a/mcs/class/System.XML/Test/XmlFiles/xsd/x-net-config-storage-factory-provider-schema.xsd b/mcs/class/System.XML/Test/XmlFiles/xsd/x-net-config-storage-factory-provider-schema.xsd
new file mode 100644
index 00000000000..d4632c5fbd8
--- /dev/null
+++ b/mcs/class/System.XML/Test/XmlFiles/xsd/x-net-config-storage-factory-provider-schema.xsd
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:ns1="http://www.croc.ru/Schemas/XmlFramework/Core/Config/XStorageFactoryProvider/1.0"
+ targetNamespace="http://www.croc.ru/Schemas/XmlFramework/Core/Config/XStorageFactoryProvider/1.0"
+ elementFormDefault="qualified"
+>
+ <xsd:annotation>
+ <xsd:documentation>Схема для описания содержимого узла {x-net-config-schema.xsd}:connection,
+ используемое стандартным провайдером фабрик XStorage (XStorageFactoryProvider)
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:element name="connection-string">
+ <xsd:complexType mixed="true">
+ <xsd:sequence>
+ <xsd:element name="secret" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>Описание секрета</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="n" type="xsd:string" use="required">
+ <xsd:annotation>
+ <xsd:documentation>Наименование секрета</xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="text" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>Текст строки соединения. Может содержать ссылки на значения секретов в виде @ + наименование_секрета</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:unique name="uniqueSecret">
+ <xsd:annotation>
+ <xsd:documentation>Наименования секретов должны быть уникальны</xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="secret"/>
+ <xsd:field xpath="@n"/>
+ </xsd:unique>
+ </xsd:element>
+ <xsd:element name="params">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="param" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>Описание параметра XStorageConnection</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
+ <xsd:attribute name="n" type="xsd:string" use="required">
+ <xsd:annotation>
+ <xsd:documentation>Наименование параметра</xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:unique name="uniqueParam">
+ <xsd:annotation>
+ <xsd:documentation>Наименование параметра должно быть уникальным</xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="param"/>
+ <xsd:field xpath="@n"/>
+ </xsd:unique>
+ </xsd:element>
+</xsd:schema>
diff --git a/mcs/class/System.XML/Test/XmlFiles/xsd/xml.xsd b/mcs/class/System.XML/Test/XmlFiles/xsd/xml.xsd
index 53f7a99630c..518c79db7d2 100644
--- a/mcs/class/System.XML/Test/XmlFiles/xsd/xml.xsd
+++ b/mcs/class/System.XML/Test/XmlFiles/xsd/xml.xsd
@@ -1,26 +1,26 @@
-<xs:schema
- xmlns:xs="http://www.w3.org/2001/XMLSchema"
- targetNamespace="http://www.w3.org/XML/1998/namespace"
- attributeFormDefault="qualified"
->
-
-<xs:attribute name="lang" type="xs:language" />
-
-<xs:attribute name="space" default="preserve">
- <xs:simpleType>
- <xs:restriction base="xs:NCName">
- <xs:enumeration value="default" />
- <xs:enumeration value="preserve" />
- </xs:restriction>
- </xs:simpleType>
-</xs:attribute>
-
-<xs:attribute name="base" type="xs:anyURI" />
-
-<xs:attributeGroup name="specialAttrs">
- <xs:attribute ref="xml:base" />
- <xs:attribute ref="xml:lang" />
- <xs:attribute ref="xml:space" />
-</xs:attributeGroup>
-
-</xs:schema>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.w3.org/XML/1998/namespace"
+ attributeFormDefault="qualified"
+>
+
+<xs:attribute name="lang" type="xs:language" />
+
+<xs:attribute name="space" default="preserve">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="default" />
+ <xs:enumeration value="preserve" />
+ </xs:restriction>
+ </xs:simpleType>
+</xs:attribute>
+
+<xs:attribute name="base" type="xs:anyURI" />
+
+<xs:attributeGroup name="specialAttrs">
+ <xs:attribute ref="xml:base" />
+ <xs:attribute ref="xml:lang" />
+ <xs:attribute ref="xml:space" />
+</xs:attributeGroup>
+
+</xs:schema>