Кодирование свойств в формате XML
В этом приложении описывается, как переменные (свойства) контекста кодируются (и декодируются) в формате XML.
Свойства кодируются и декодируются только если их экспортируют или импортируют, используя Редактор свойств. В противном случае, SberMobile хранит и обрабатывает свойства как Таблицы данных. Каждое свойство - это отдельная Таблица данных.
Схема XML для свойств
Схема XML для кодирования свойств выглядит следующим образом:
Схема XML - это описание XML-документа, обычно с точки зрения правил структуры и содержания документов такого типа, а не только базовых правил синтаксиса, накладываемых самим форматом XML. Схема XML дает представление о типа документа на относительно высоком уровне абстракции. Более подробно об этом см. http://www.w3.org/XML/Schema. |
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormDefault="qualified">
<xs:element name="properties" type="propertiesType"/>
<xs:complexType name="validatorsType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="contentType" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="fieldType">
<xs:sequence>
<xs:element type="validatorsType" name="validators" minOccurs="0"/>
<xs:element type="xs:string" name="help" minOccurs="0"/>
<xs:element type="selectionValuesType" name="selectionValues" minOccurs="0"/>
<xs:element type="xs:string" name="group" minOccurs="0"/>
<xs:element name="defaultValue">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element type="xs:string" name="nullValue" minOccurs="0"/>
<xs:element type="tableType" name="table" minOccurs="0"/>
<xs:element type="dataType" name="data" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="name" use="optional"/>
<xs:attribute type="xs:string" name="type" use="optional"/>
<xs:attribute type="xs:string" name="hidden" use="optional"/>
<xs:attribute type="xs:string" name="keyfield" use="optional"/>
<xs:attribute type="xs:string" name="notReplicated" use="optional"/>
<xs:attribute type="xs:string" name="nullable" use="optional"/>
<xs:attribute type="xs:string" name="description" use="optional"/>
<xs:attribute type="xs:string" name="editor" use="optional"/>
<xs:attribute type="xs:string" name="advanced" use="optional"/>
<xs:attribute type="xs:string" name="readonly" use="optional"/>
<xs:attribute type="xs:string" name="inline" use="optional"/>
<xs:attribute type="xs:string" name="extendableSelectionValues" use="optional"/>
</xs:complexType>
<xs:complexType name="fieldsType">
<xs:sequence>
<xs:element type="fieldType" name="field" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="formatType">
<xs:sequence>
<xs:element type="fieldsType" name="fields"/>
<xs:element type="bindingsType" name="bindings" minOccurs="0"/>
<xs:element type="validatorsType" name="validators" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:int" name="maxRecords" use="optional"/>
<xs:attribute type="xs:byte" name="minRecords" use="optional"/>
<xs:attribute type="xs:string" name="reorderable" use="optional"/>
</xs:complexType>
<xs:complexType name="valueType" mixed="true">
<xs:sequence>
<xs:element type="xs:string" name="nullValue" minOccurs="0"/>
<xs:element type="tableType" name="table" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="name" use="optional"/>
</xs:complexType>
<xs:complexType name="recordType" mixed="true">
<xs:sequence>
<xs:element type="valueType" name="value" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="recordsType">
<xs:sequence>
<xs:element type="recordType" name="record" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="tableType">
<xs:sequence>
<xs:element type="formatType" name="format"/>
<xs:element type="recordsType" name="records" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="entryType">
<xs:sequence>
<xs:element type="xs:string" name="string"/>
<xs:element type="tableType" name="table"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="defaultValueType">
<xs:sequence>
<xs:element type="xs:string" name="nullValue" minOccurs="0"/>
<xs:element type="tableType" name="table" minOccurs="0"/>
<xs:element type="dataType" name="data" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="bindingType">
<xs:sequence>
<xs:element type="xs:string" name="reference"/>
<xs:element type="xs:string" name="expression"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="bindingsType">
<xs:sequence>
<xs:element type="bindingType" name="binding" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="optionType" mixed="true">
<xs:sequence>
<xs:element type="xs:string" name="nullValue" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="description" use="optional"/>
</xs:complexType>
<xs:complexType name="selectionValuesType">
<xs:sequence>
<xs:element type="optionType" name="option" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="dataType">
<xs:sequence>
<xs:element type="xs:string" name="nullValue"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="propertiesType">
<xs:sequence>
<xs:element type="entryType" name="entry" maxOccurs="unbounded" minOccurs="0"/>
<xs:element type="propertiesType" name="properties" minOccurs="0"/>
</xs:sequence>
<xs:attribute type="xs:string" name="class" use="optional"/>
</xs:complexType>
</xs:schema>
Данная схема XML определяет структуру XML-файла с экспортированными свойствами контекста. Корневой элемент - properties,
содержит все экспортированные свойства.
Элемент properties
содержит 0 или более элементов entry
. Эти элементы содержат индивидуальные свойства.
Элемент entry
включает два дочерних элемента: string
и table
. Элемент string
содержит имя свойства. Элемент table
содержит таблицу данных для этого свойства.
Таблицы данных для свойств внутри элементов |
Примеры кодирования свойств в формате XML
<?xml version="1.0" ?>
<properties>
<properties class="linked-hash-map">
<entry>
<string>connectionProperties</string>
<table>
-- skipped --
</table>
</entry>
<entry>
<string>performanceTesting</string>
<table>
-- skipped --
</table>
</entry>
<entry>
<string>genericProperties</string>
<table>
-- skipped --
</table>
</entry>
<entry>
<string>managedVariables</string>
<table>
-- skipped --
</table>
</entry>
<entry>
<string>managedFunctions</string>
<table>
-- skipped --
</table>
</entry>
<entry>
<string>managedEvents</string>
<table>
-- skipped --
</table>
</entry>
<entry>
<string>statisticsProperties</string>
<table>
-- skipped --
</table>
</entry>
<entry>
<string>granulator</string>
<table>
-- skipped --
</table>
</entry>
<entry>
<string>settingSyncOptions</string>
<table>
-- skipped --
</table>
</entry>
<entry>
<string>ccmConfigurationManagement</string>
<table>
-- skipped --
</table>
</entry>
<entry>
<string>ccmCompliancePolicies</string>
<table>
-- skipped --
</table>
</entry>
</properties>
</properties>