diff options
author | Atsushi Eno <atsushieno@gmail.com> | 2005-12-26 17:16:44 +0300 |
---|---|---|
committer | Atsushi Eno <atsushieno@gmail.com> | 2005-12-26 17:16:44 +0300 |
commit | bf5bf0e19ff1dbb8be770f3827ac897e93407f5d (patch) | |
tree | 88ef662fe4f52e5ba4c809dcadebcbe7ddf06cb3 /mcs/class/System.XML | |
parent | 2f6ed89c7f222d78ba82a703f1fb86851fce64d0 (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')
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> |