4 Приказом Федерального агентства по техническому регулированию и метрологии от 30 июня 2023 г. N 468-ст межгосударственный стандарт ГОСТ 34962-2023 (ISO 23219:2022) введен в действие в качестве национального стандарта Российской Федерации с 1 марта 2024 г.
5 Настоящий стандарт является модифицированным по отношению к международному стандарту ISO 23219:2022 "Газ природный. Формат данных газовых хроматографов - анализаторов природного газа. Формат файла XML" ("Natural gas - Format for data from gas chromatograph analysers for natural gas - XML file format", MOD) путем изменения отдельных фраз (слов, ссылок), включения дополнительных фраз, которые выделены в тексте курсивом.
Наименование настоящего стандарта изменено относительно наименования указанного международного стандарта для приведения в соответствие с ГОСТ 1.5 (подраздел 3.6).
Наименования на русском языке компонентов природного газа, физико-химических свойств и их единицы измерения приведены в дополнительном приложении ДА.
Сведения о соответствии ссылочных межгосударственных стандартов международным стандартам, использованным в качестве ссылочных в примененном международном стандарте, приведены в дополнительном приложении ДБ
6 ВВЕДЕН ВПЕРВЫЕ
Информация о введении в действие (прекращении действия) настоящего стандарта и изменений к нему на территории указанных выше государств публикуется в указателях национальных стандартов, издаваемых в этих государствах, а также в сети Интернет на сайтах соответствующих национальных органов по стандартизации.
В случае пересмотра, изменения или отмены настоящего стандарта соответствующая информация будет опубликована на официальном интернет-сайте Межгосударственного совета по стандартизации, метрологии и сертификации в каталоге "Межгосударственные стандарты"
Настоящий стандарт описывает формат XML-файла для представления результатов определения компонентного состава и физико-химических показателей природного газа. Имя файла должно иметь расширение XML (без учета регистра).
Формат файла XML применяют для вывода компонентного состава и физико-химических показателей природного газа с соответствующими неопределенностями, которые определяют по ГОСТ 31371.1 - ГОСТ 31371.7, ГОСТ 31369, а также для ввода данных с целью оценки эффективности аналитических систем по ГОСТ 34893. Как правило, состав природного газа, указанный в протоколе анализа, или результаты оценки эффективности аналитической системы представляют в виде электронной таблицы для последующей обработки данных.
В настоящем стандарте использованы нормативные ссылки на следующие межгосударственные стандарты:
ГОСТ 31369 (ISO 6976:2016) Газ природный. Вычисление теплоты сгорания, плотности, относительной плотности и числа Воббе на основе компонентного состава
ГОСТ 31371.1 (ISO 6974-1:2012) Газ природный. Определение состава методом газовой хроматографии с оценкой неопределенности. Часть 1. Общие указания и определение состава
ГОСТ 31371.2 (ISO 6974-2:2012) Газ природный. Определение состава методом газовой хроматографии с оценкой неопределенности. Часть 2. Вычисление неопределенности
ГОСТ 31371.3 (ИСО 6974-3:2000) Газ природный. Определение состава методом газовой хроматографии с оценкой неопределенности. Часть 3. Определение водорода, гелия, кислорода, азота, диоксида углерода и углеводородов до C8 с использованием двух насадочных колонок
ГОСТ 31371.4 (ИСО 6974-4:2000) Газ природный. Определение состава методом газовой хроматографии с оценкой неопределенности. Часть 4. Определение азота, диоксида углерода и углеводородов C1 - C5 и C6+ в лаборатории и с помощью встроенной измерительной системы с использованием двух колонок
ГОСТ 31371.5 (ISO 6974-5:2014) Газ природный. Определение состава методом газовой хроматографии с оценкой неопределенности. Часть 5. Определение азота, диоксида углерода и углеводородов C1 - C5 и C6+ изотермическим методом
ГОСТ 31371.6 (ИСО 6974-6:2002) Газ природный. Определение состава методом газовой хроматографии с оценкой неопределенности. Часть 6. Определение водорода, гелия, кислорода, азота, диоксида углерода и углеводородов C1 - C8 с использованием трех капиллярных колонок
ГОСТ 31371.7 Газ природный. Определение состава методом газовой хроматографии с оценкой неопределенности. Часть 7. Методика измерений молярной доли компонентов
ГОСТ 34100.3/ISO/IEC Guide 98-3:2008 Неопределенность измерения. Часть 3. Руководство по выражению неопределенности измерения
ГОСТ 34893 (ISO 10723:2012) Газ природный. Оценка эффективности аналитических систем
Примечание - При пользовании настоящим стандартом целесообразно проверить действие ссылочных стандартов и классификаторов на официальном интернет-сайте Межгосударственного совета по стандартизации, метрологии и сертификации (www.easc.by) или по указателям национальных стандартов, издаваемым в государствах, указанных в предисловии, или на официальных сайтах соответствующих национальных органов по стандартизации. Если на документ дана недатированная ссылка, то следует использовать документ, действующий на текущий момент, с учетом всех внесенных в него изменений. Если заменен ссылочный документ, на который дана датированная ссылка, то следует использовать указанную версию этого документа. Если после принятия настоящего стандарта в ссылочный документ, на который дана датированная ссылка, внесено изменение, затрагивающее положение, на которое дана ссылка, то это положение применяется без учета данного изменения. Если ссылочный документ отменен без замены, то положение, в котором дана ссылка на него, применяется в части, не затрагивающей эту ссылку.
В настоящем стандарте применены следующие термины с соответствующими определениями:
3.1 расширяемый язык разметки XML (extensible Markup Language): Язык разметки гипертекстовых файлов, предназначенный для хранения, передачи, восстановления и отображения произвольных массивов данных и определяющий набор инструкций для кодирования документов в формате, который одновременно может считываться как пользователем, так и специальной программой - XML-процессором.
3.2 XML-формат файла: Формат гипертекстовых файлов, предназначенный для хранения структурированных данных, а также задания инструкций XML-процессорам (специальным программам, считывающим файлы в XML-формате и обеспечивающим доступ к их содержимому).
3.3 тег: Элемент разметки гипертекста в языке XML, задающий инструкции отображения и размещения текста, содержащегося между начальным и конечным тегами, в соответствии с правилами, указанными в начальном теге.
Для обеспечения правильного представления информации в формате XML необходимо обеспечить следующее:
a) химическая формула должна быть однозначной, максимально лаконичной, непатентованной, и, поскольку она является частью международного текстового химического идентификатора (InChI), этот компонент должен быть однозначно идентифицирован пользователем. Альтернативой является использование регистрационного номера химических рефератов (CAS RN), но он не столь понятен и является собственностью компании;
b) следует избегать атрибутов в тегах, например не <amount unit="mol%">1,2</amount>, а <amount><value>1,2</value><unit>mol%</unit></amount>;
c) XML-файл должен содержать некоторую контрольную сумму (в конце), например контрольную сумму CRC-16 (шестнадцатеричную), отображаемую ZIP-программами, в конце файла в виде XML-комментария, например <!--D86A3640-->. Это делают не в целях безопасности, а для проверки того, что содержимое файла не было повреждено;
d) дату и время помечают тегом <date_time> и используют формат написания, установленный в [1], например <date_time>2018-07-10T13:59:00+01</date_time>.
Эти данные могут быть использованы для отображения:
- даты и времени регистрации пробы;
- даты и времени, когда были получены результаты;
- даты и времени, когда результаты были подтверждены;
- даты и времени, когда был выпущен отчет;
e) указывают дату и время, при этом допускается использовать любой формат, приемлемый для электронных таблиц. Например, время может отображаться в формате чч:мм:сс (например, 13:45:10), где отображение секунд необязательно (предполагается, что оно равно 00, если они не указаны, а часы представлены в 24-часовом формате). Дату можно отображать в формате дд/мм/гггг (например, 27/02/2017) или дд-ммм-гг (например, 27-фев-17);
f) в XML-тегах используют нижний регистр (в т.ч. для отображения международного текстового химического идентификатора InChI, который принято записывать в виде inchi);
g) теги могут состоять из нескольких слов, которые должны быть объединены подчеркиванием, например <retention_time>;
h) теги могут быть представлены полными словами, краткими формами или сокращениями (акронимами);
i) следует выбирать десятичный тип числовых данных (тип xs:decimal или xs:float/xs:double). Числа не должны содержать пробелов и не допускается использовать точку в качестве десятичного разделителя, т.е. не должно быть группировки цифр и разделителя разрядов (например, запятой). Электронная нотация используется для степеней 10, например: 34, 12.3, -3.4567, 5.6E3 и 7.8E-2;
k) в единицах величин следует использовать один знак косой черты (/) или показатель степени, например МДж/м3 (см. приложения A - C) или МДж·м-3. Пробелы между единицами величин не используют;
l) свойства должны быть отображены в блоке <properties>, причем каждое свойство должно быть в блоке <properties>, и для большей гибкости свойство идентифицируют с помощью ключевого слова, а не с помощью XML-тега (см. приложения A - C);
m) XML определяют тегами - ключевыми словами, заключенными в угловые скобки, например <value>, с завершающим тегом с косой чертой "/" перед ключевым словом, например </value>;
n) формат XML-файла определен в схеме, приведенной в приложении A;
o) XML-теги, определенные в схеме, не чувствительны к регистру (все они строчные) и не имеют начальных или конечных пробелов. Теги не имеют атрибутов, т.е. внутри тега нет имени ="value";
p) содержимое тегов, например ключевые слова, не чувствительно к регистру, а начальные и/или конечные пробелы игнорируют. В примерах (см. приложения B, C и D) содержание часто сопровождают пробелами в конце, чтобы улучшить удобочитаемость;
q) необходимость в использовании нижнего регистра возникает только при различении приставки системы СИ m (милли) и M (мега). Ключевые слова также не должны содержать пробелов;
r) примеры ключевых слов и единиц величин приведены в приложениях A - D. Часто используемые ключевые слова также указаны в приложениях A - D;
s) любые ключевые слова и единицы величин могут быть согласованы между приложениями для записи и чтения (см. раздел 5);
t) приложения, считывающие XML-данные, должны игнорировать любые разделы с ключевыми словами, которые не имеют отношения к их работе;
u) программное обеспечение, способное обрабатывать XML-данные в формате электронных таблиц, указано в приложении E;
v) теги, содержащие значения, должны иметь уникальные имена.
5.1 Применяемые ключевые слова и единицы величин приведены в приложении A (см. также примеры часто используемых ключевых слов в приложениях B, C и D).
5.2 Примеры наименования компонентов природного газа приведены в приложении F.
- ppm молярные, % мол., mf или mol_fr (молярная доля);
- ppm массовые, % масс. или mass_fr (массовая доля);
- не рекомендуется применять единицы концентрации (например, мг/м3), но при необходимости их использования следует указать стандартные условия для объема, который включает данная единица измерения.
Примечание - ppm - это количество частей на миллион, т.е. количество молей компонента на миллион молей смеси (или частей на миллион для объема идеального газа).
5.4 Для определения теплоты сгорания (ТС) природного газа следует учитывать, что:
- высшая (superior, higher, upper) теплота сгорания соответствует "брутто" (gross) теплоте сгорания;
- низшая (inferior, lower) теплота сгорания соответствует "нетто" (net) теплоте сгорания.
Возможные единицы величин: МДж/м3, кДж/моль, МДж/кг, БТЕ/фут3.
5.5 В соответствии с ГОСТ 34100.3 каждое измерение должно иметь связанную с ним неопределенность, что отражают с помощью тега <uncertainty>. Данная стандартная неопределенность (стандартное отклонение) должна иметь те же единицы, что и измеряемая величина (т.е. быть абсолютной), также необходимо указать доверительную вероятность. Рекомендуется также указывать тип распределения. По умолчанию предполагается, что распределение является нормальным (гауссовым). Другими распространенными типами распределения являются равномерное (однородное) и треугольное.
5.6 Поскольку количество вещества указано в молярных долях, то общее количество молярных долей всех компонентов в смеси должно быть равно единице; следовательно, всегда существует корреляция между молярными долями. Блок "correlation_coefficient" предназначен для обеспечения данной корреляции. Если не указано обратное, то предполагается, что блок представляет собой единичную матрицу (равна 1, если количество строк и столбцов одинаково, или равна 0, если количество строк не равно количеству столбцов).
5.7 Для высоты и площади пика единицы измерения являются произвольными, однако они должны быть согласованы для применяемого анализатора и методики анализа. Время удерживания необходимо указывать в секундах.
(обязательное)
A.1 <measurements>
A.1.1 <parameters>
Необязательные параметры для описания измерений. Примеры приведены ниже.
A.1.1.1 <date_time>
A.1.1.2 <cylinder_number>
Текстовое описание.
A.1.1.3 <certficate_number>
Текстовое описание.
A.1.2 <peak>
A.1.2.1 <component>
Данные о компонентах.
A.1.2.1.1 <name_local>
Текстовое описание компонента.
A.1.2.1.2 <parameters>
Необязательные параметры для характеристики компонента природного газа.
A.1.2.1.2.1 <k_name>
Текстовое описание физико-химического свойства. Примеры физико-химических свойств природного газа, единиц измерения, а также дополнительных сведений приведены ниже.
Следует обратить внимание, что дескриптор InChI содержит химическую формулу.
A.1.2.1.2.2 <k_value>
Числовое значение.
A.1.2.1.2.3 <k_units>
Текстовое описание стандартных единиц величин.
A.1.2.1.3 <inchi>
Текст в описании компонента (см. приложение F).
A.1.2.1.4 <amount>
Данные о количестве вещества в компоненте.
A.1.2.1.4.1 <value>
Числовое значение.
A.1.2.1.4.2 <units>
Текстовое описание единиц величин (см. 5.3).
A.1.2.1.4.3 <uncertainty>
Данные для неопределенности количества компонента.
A.1.2.1.4.3.1 <u_value>
Числовое значение.
A.1.2.1.4.3.2 <u_coverage_factor>
Числовое значение, например, для 95% доверительного интервала нормального распределения значение равно 1,96; которое, как правило, округляют и принимают за 2.
A.1.2.1.4.3.3 <u_distribution>
Текстовое описание типа распределения вероятности (см. 5.5). Если описание отсутствует, то распределение считают нормальным.
A.1.2.1.4.3.4 <u_measurements>
Целочисленное значение. Количество измерений, используемых при вычислении <u_value>.
A.1.2.1.4.3.5 <u_correlation_rc>
Целочисленное значение. Уникальное значение для <correlation_coefficients>, <c_row> или <c_column>.
A.1.2.2 <retention_time>
Числовое значение в секундах.
A.1.2.3 <peak height>
Числовое значение с произвольными единицами величин (согласовано по всему файлу).
A.1.2.4 <peak area>
Числовое значение с произвольными единицами величин (согласовано по всему файлу).
A.1.3 <correlation_coefficients>
См. 5.6. Если отсутствует, предполагается, что это идентификационная матрица.
A.1.3.1 <element>
A.1.3.1.1 <c_row>
Целочисленное значение (на которое ссылается <u_correlation_rc>).
A.1.3.1.2 <c_column>
Целочисленное значение (на которое ссылается <u_correlation_rc>).
A.1.3.1.3 <c_value>
Числовое значение (в диапазоне от -1 до +1).
A.2 <properties>
A.2.1 <method>
Данные для метода расчета свойства.
A.2.1.1 <m_name>
A.2.1.2 <parameters>
Параметры, которые имеют отношение к методу. Примеры приведены ниже.
A.2.1.2.1 <combustion_temperature>
Числовое значение: < 32 °C, от 32 до 100 °F, > 100 К.
A.2.1.2.2 <metering_temperature>
Числовое значение: < 32 °C, от 32 до 100 °F, > 100 К.
A.2.1.2.3 <metering_pressure>
Числовое значение: > 25 kPa, < 25 psiA.
A.2.1.3 <property>
A.2.1.3.1 <p_name>
Текстовое описание свойства.
Примеры свойств, единицы измерений в квадратных скобках и обозначений данных свойств приведены ниже.
A.2.1.3.2 <p_value>
Числовое значение.
A.2.1.3.3 <p_units>
Текстовое описание стандартных единиц величин.
A.2.1.3.4 <uncertainty>
A.2.1.3.4.1 <q_value>
Числовое значение в тех же единицах, что и значение свойства.
A.2.1.3.4.2 <q_coverage_factor>
Числовое значение. При отсутствии принимается единица (1), т.е. неопределенность является стандартным отклонением.
A.2.1.3.4.3 <q_distribution>
Текстовое описание типа распределения. При отсутствии описания предполагается нормальное распределение.
A.2.1.3.4.4 <q_method>
Необязательное текстовое описание метода, используемого для расчета неопределенности.
A.3 XML-схема (iso23219.XSD)
Ниже приведен пример схемы для вышеуказанного содержимого.
Допускается добавлять другие теги, которые могут быть полезны в конкретном случае, например дополнительные данные, не рассмотренные здесь, изображения, пиктограммы и т.д.
Примечание - Допускается также обозначать на русском языке приведенные выше и дополнительные теги, используя принятые в межгосударственной стандартизации понятия, наименования компонентов, свойства природного газа (и их символьные обозначения), а также единицы величин. Примеры приведены в приложении ДА. Также допускается использовать дополнительные теги для описания мест отбора проб, указания подразделения и/или лица, проводившего отбор проб и/или испытания и т.д.
<?xml version="1.0" encoding="windows-1251"?>
<xsd:schema xmlns:xsd="/template/go.php?url=https://www.w3.org/2001/XMLSchema">
<xsd:element name="iso23219">
<xsd:complexType><xsd:sequence>
<xsd:element name="measurements" minOccurs="0" maxOccurs="unbounded"><xsd:complexType><xsd:sequence>
<xsd:element name="parameters" minOccurs="0" maxOccurs="1"> <xsd:complexType><xsd:sequence>
<xsd:element name="date_time" type="xsd:string" minOccurs="0"
maxOccurs="1"/>
<xsd:element name="cylinder_number" type="xsd:string" minOccurs="0"
maxOccurs="1"/>
<xsd:element name="certificate_number" type="xsd:string" minOccurs="0" maxOccurs="1"/>
</xsd:sequence></xsd:complexType></xsd:element>
<xsd.element name="peak" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType><xsd:sequence>
<xsd:element name="component" minOccurs="0" maxOccurs="1"> <xsd:complexType><xsd:sequence>
<xsd:element name="name_local" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="parameters" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType><xsd sequence>
<xsd:element name="k_name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="k_value" type="xsd:double" minOccurs="1" maxOccurs="1"/>
<xsd:element name="k_units" type="xsd:string" minOccurs="0" maxOccurs="1"/>
</xsd:sequence></xsd:complexType></xsd:element>
<xsd:element name="inchi" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="amount" minOccurs="1" maxOccurs="1">
<xsd:complexType><xsd:sequence>
<xsd:element name="value" type="xsd:double" minOccurs="1" maxOccurs="1"/>
<xsd:element name="units" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="uncertainty" minOccurs="0" maxOccurs="1">
<xsd:complexType><xsd:sequence>
<xsd:element name="u_value" type="xsd:double" minOccurs="1"
maxOccurs="1"/>
<xsd:element name="u_coverage_factor" type="xsd:double" minOccurs="0" maxOccurs="1"/>
<xsd:element name="u_distribution" type="xsd:string" minOccurs="0"
maxOccurs="1"/>
<xsd:element name="u_measurements" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
<xsd:element name="u_correlation_rc" type="xsd:positiveInteger" minOccurs="0" maxOccurs="1"/>
</xsd:sequence></xsd:complexType></xsd:element>
</xsd:sequence></xsd:complexType></xsd:element>
</xsd:sequence></xsd:complexType></xsd:element>
<xsd:element name="retention_time" type="xsd:double" minOccurs="0" maxOccurs="1"/>
<xsd:element name="peak_height" type="xsd:double" minOccurs="0" maxOccurs="1"/>
<xsd:element name="peak_area" type="xsd:double" minOccurs="0" maxOccurs="1"/>
</xsd:sequence></xsd:complexType></xsd:element>
<xsd:element name="correlation_coefficients" minOccurs="0" maxOccurs="1"> <xsd:complexType><xsd:sequence>
<xsd:element name="element" minOccurs="1" maxOccurs="unbounded"> <xsd:complexType><xsd:sequence>
<xsd:element name="c_row" type="xsd:positiveInteger" minOccurs="1" maxOccurs="1"/>
<xsd:element name="c_column" type="xsd:positiveInteger" minOccurs="1" maxOccurs="1"/>
<xsd:element name="c_value" type="xsd:double" minOccurs="1" maxOccurs="1"/>
</xsd:sequence></xsd:complexType></xsd:element>
</xsd:sequence></xsd:complexType></xsd:element>
</xsd:sequence></xsd:complexType></xsd:element>
<xsd:element name="properties" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType><xsd:sequence>
<xsd:element name="method" minOccurs="1" maxOccurs="1">
<xsd:complexType><xsd:sequence>
<xsd:element name="m_name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="parameters" minOccurs="0" maxOccurs="1"> <xsd:complexType><xsd:sequence>
<xsd:element name="combustion_temperature" type="xsd:double" minOccurs="0" maxOccurs="1"/>
<xsd:element name="metering_temperature" type="xsd:double" minOccurs="0" maxOccurs="1"/>
<xsd:element name="metering_pressure" type="xsd:double" minOccurs="0" maxOccurs="1"/>
</xsd:sequence></xsd:complexType></xsd:element>
<xsd:element name="property" minOccurs="1" maxOccurs="unbounded"> <xsd:complexType><xsd:sequence>
<xsd:element name="p_name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="p_value" type="xsd:double" minOccurs="1" maxOccurs="1"/>
<xsd:element name="p_units" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="uncertainty" minOccurs="0" maxOccurs="1"> <xsd:complexType><xsd:sequence>
<xsd:element name="q_value" type="xsd:double" minOccurs="1" maxOccurs="1"/>
<xsd:element name="q_coverage_factor" type="xsd:double" minOccurs="0" maxOccurs="1"/>
<xsd:element name="q_distribution" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="q_method" type="xsd:string" minOccurs="0" maxOccurs="1"/>
</xsd:sequence></xsd:complexType></xsd:element>
</xsd:sequence></xsd:complexType></xsd:element>
</xsd:sequence></xsd:complexType></xsd:element>
</xsd:sequence></xsd.complexType></xsd:element>
</xsd:sequence></xsd:complexType></xsd:element>
(справочное)
<?xml version="1.0" encoding="windows-1251" standalone="yes"?>
<iso23219>
<measurements>
<parameters>
<date_time>2019-09-28 18:29</date_time>
<cylinder_number>APL/123456</cylinder_number>
<certificate_number>APL-2019-09-28</certificate_number>
</parameters>
<peak>
<component>
<name_local>N2</name_local>
<inchi>1S/N2/c1-2</inchi>
<amount>
<value>4.415</value>
<units>mol%</units>
<uncertainty>
<u_value>0.012519</u_value>
<u_coverage_factor>2</u_coverage_factor>
<u_distribution>normal</u_distribution>
<u_measurements>6</u_measurements>
<u_correlation_rc>1</u_correlation_rc>
</uncertainty>
</amount>
</component>
</peak>
<peak>
<component>
<name_local>CO2</name_local>
<inchi>1S/CO2/c2-1-3</inchi>
<amount>
<value>3.272</value>
<units>mol%</units>
<uncertainty>
<u_value>0.007445</u_value>
<u_coverage_factor>2</u_coverage_factor>
<u_distribution>normal</u_distribution>
<u_measurements>6</u_measurements>
<u_correlation_rc>2</u_correlation_rc>
</uncertainty>
</amount>
</component>
</peak>
<peak>
<component>
<name_local>CH4</name_local>
<inchi>1S/CH4/h1H4</inchi>
<amount>
<value>85.412</value>
<units>mol%</units>
<uncertainty>
<u_value>0.019853</u_value>
<u_coverage_factor>2</u_coverage_factor>
<u_distribution>normal</u_distribution>
<u_measurements>6</u_measurements>
<u_correlation_rc>3</u_correlation_rc>
</uncertainty>
</amount>
</component>
</peak>
<peak>
<component>
<name_local>C2H6</name_local>
<inchi>1S/C2H6/c1-2/h1-2H3</inchi>
<amount>
<value>6.901</value>
<units>mol%</units>
<uncertainty>
<u_value>0.015987</u_value>
<u_coverage_factor>2</u_coverage_factor>
<u_distribution>normal</u_distribution>
<u_measurements>6</u_measurements>
<u_correlation_rc>4</u_correlation_rc>
</uncertainty>
</amount>
</component>
</peak>
<correlation_coefficients>
<element><c_row>1</c_row><c_column>2</c_column><c_value>-0.06566</c_value></element>
<element><c_row>1</c_row><c_column>3</c_column><c_value>-0.52431</c_value></element>
<element><c_row>1</c_row><c_column>4</c_column><c_value>-0.10137</c_value></element>
<element><c_row>2</c_row><c_column>3</c_column><c_value>-0.26340</c_value></element>
<element><c_row>2</c_row><c_column>4</c_column><c_value>-0.08720</c_value></element>
<element><c_row>3</c_row><c_column>4</c_column><c_value>-0.70862</c_value></element>
</correlation_coefficients>
</measurements>
<properties>
<method>
<m_name>iso6976:2016</m_name>
<parameters>
<combustion_temperature>15</combustion_temperature>
<metering_temperature>15</metering_temperature>
<metering_pressure>101.325</metering_pressure>
</parameters>
<property>
<p_name>volume_gross_calorific_value</p_name>
<p_value>36.847</p_value>
<p_units>MJ/m3</p_units>
<uncertainty>
<q_value>0.011</q_value>
<q_coverage_factor>2</q_coverage_factor>
<q_distribution>normal</q_distribution>
<q_method>iso6976:2016</q_method>
</uncertainty>
</property>
</method>
</properties>
</iso23219>
(справочное)
<?xml version="1.0" encoding="windows-1251" standalone="yes"?>
<iso23219>
<measurements>
<parameters>
<date_time>2019-09-28 12:05</date_time>
<cylinder_number>123456789</cylinder_number>
</parameters>
<peak>
<component>
<name_local>nC6</name_local>
<inchi>1S/C6H14/c1-3-5-6-4-2/h3-6H2,1-2H3</inchi>
<amount>
<value>0.1079</value>
<units>mol%</units>
<uncertainty><u_value>0.0015</u_value></uncertainty>
</amount>
</component>
</peak>
<peak>
<component>
<name_local>C3H8</name_local>
<inchi>1S/C3H8/c1-3-2/h3H2,1-2H3</inchi>
<amount>
<value>3.2532</value>
<units>mol%</units>
<uncertainty><u_value>0.0098</u_value></uncertainty>
</amount>
</component>
</peak>
<peak>
<component>
<name_local>iC4</name_local>
<inchi>1S/C4H10/c1-4(2)3/h4H,1-3H3</inchi>
<amount>
<value>0.4936</value>
<units>mol%>/units>
<uncertainty><u_value>0.0017</u_value></uncertainty>
</amount>
</component>
</peak>
<peak>
<component>
<name_local>nC4</name_local>
<inchi>1S/C4H10/c1-3-4-2/h3-4H2,1-2H3</inchi>
<amount>
<value>0.4927</value>
<units>mol%</units>
<uncertainty><u_value>0.0017</u_value></uncertainty>
</amount>
</component>
</peak>
<peak>
<component>
<name_local>neoC5</name_local>
<inchi>1S/C5H12/c1-5(2,3)4/h1-4H3</inchi>
<amount>
<value>0.11450</value>
<units>mol%</units>
<uncertainty><u_value>0.00091</u_value></uncertainty>
</amount>
</component>
</peak>
<peak>
<component>
<name_local>iC5</name_local>
<inchi>1S/C5H12/c1-4-5(2)3/h5H,4H2,1-3H3</inchi>
<amount>
<value>0.10867</value>
<units>mol%</units>
<uncertainty><u_value>0.00065</u_value></uncertainty>
</amount>
</component>
</peak>
<peak>
<component>
<name_local>nC5</name_local>
<inchi>1S/C5H12/c1-3-5-4-2/h3-5H2,1-2H3</inchi>
<amount>
<value>0.10953</value>
<units>mol%</units>
<uncertainty><u_value>0.00067</u_value></uncertainty>
</amount>
</component>
</peak>
<peak>
<component>
<name_local>N2</name_local>
<inchi>1S/N2/c1-2</inchi>
<amount>
<value>4.415</value>
<units>mol%</units>
<uncertainty><u_value>0.013</u_value>/uncertainty>
</amount>
</component>
</peak>
<peak>
<component>
<name_local>CH4</name_local>
<inchi>1S/CH4/h1H4</inchi>
<amount>
<value>80.730</value>
<units>mol%</units>
<uncertainty><u_value>0.029</u_value></uncertainty>
</amount>
</component>
</peak>
<peak>
<component>
<name_local>CO2</name_local>
<inchi>1S/CO2/c2-1-3</inchi>
<amount>
<value>3.2739</value>
<units>mol%</units>
<uncertainty><u_value>0.0076</u_value>/uncertainty>
</amount>
</component>
</peak>
<peak>
<component>
<name_local>C2H6</name_local>
<inchi>1S/C2H6/c1-2/h1-2H3</inchi>
<amount>
<value>6.901</value>
<units>mol%</units>
<uncertainty><u_value>0.017</u_value></uncertainty>
</amount>
</component>
</peak>
</measurements>
<properties>
<method>
<m_name>iso6976</m_name>
<parameters>
<combustion_temperature>15</combustion_temperature>
<metering_temperature>15</metering_temperature>
<metering_pressure>101.325</metering_pressure>
</parameters>
<property>
<p_name>molar_mass</p_name>
<p_value>20.0446</p_value>
<p_units>g/mol</p_units>
<uncertainty><q_value>0.0098</q_value></uncertainty>
</property>
<property>
<p_name>gas_compression_factor</p_name>
<p_value>0.997224</p_value>
<p_units>-</p_units>
<uncertainty><q_value>0.000045</q_value></uncertainty>
</property>
<property>
<p_name>volume_gross_calorific_value</p_name>
<p_value>40.052</p_value>
<p_units>MJ/m3</p_units>
<uncertainty><q_value>0.020</q_value></uncertainty>
</property>
<property>
<p_name>molar_gross_calorific_value</p_name>
<p_value>944.40</p_value>
<p_units>kJ/mol</p_units>
<uncertainty><q_value>0.47</q_value></uncertainty>
</property>
<property>
<p_name>mass_gross_calorific_value</p_name>
<p_value>47.115</p_value>
<p_units>MJ/kg</p_units>
<uncertainty><q_value>0.014</q_value></uncertainty>
</property>
<property>
<p_name>volume_net_calorific_value</p_name>
<p_value>36.230</p_value>
<p_units>MJ/m3</p_units>
<uncertainty><q_value>0.019</q_value></uncertainty>
</property>
<property>
<p_name>molar_net_calorific_value</p_name>
<p_value>854.27</p_value>
<p_units>kJ/mol</p_units>
<uncertainty><q_value>0.43</q_value></uncertainty>
</property>
<property>
<p_name>mass_net_calorific_value</p_name>
<p_value>42.619</p_value>
<p_units>MJ/kg</p_units>
<uncertainty><q_value>0.013</q_value></uncertainty>
</property>
<property>
<p_name>relative_density</p_name>
<p_value>0.69366</p_value>
<p_units>-</p_units>
<uncertainty><q_value>0.00034</q_value></uncertainty>
</property>
<property>
<p_name>gas_density</p_name>
<p_value>0.85010</p_value>
<p_units>kg/m3</p_units>
<uncertainty><q_value>0.00042</q_value></uncertainty>
</property>
<property>
<p_name>wobbe_index</p_name>
<p_value>48.090</p_value>
<p_units>MJ/m3</p_units>
<uncertainty><q_value>0.016</q_value></uncertainty>
</property>
<property>
<p_name>net_wobbe_index</p_name>
<p_value>43.500</p_value>
<p_units>MJ/m3</p_units>
<uncertainty><q_value>0.015</q_value></uncertainty>
</property>
<property>
<p_name>ideal_volume_gross_calorific_value</p_name>
<p_value>39.941</p_value>
<p_units>MJ/m3</p_units>
<uncertainty><q_value>0.020</q_value></uncertainty>
</property>
<property>
<p_name>ideal_volume_net_calorific_value</p_name>
<p_value>36.129</p_value>
<p_units>MJ/m3</p_units>
<uncertainty><q_value>0.018</q_value></uncertainty>
</property>
<property>
<p_name>ideal_relative_density</p_name>
<p_value>0.69202</p_value>
<p_units>-</p_units>
<uncertainty><q_value>0.00034</q_value></uncertainty>
</property>
<property>
<p_name>ideal_gas_density>/p_name>
<p_value>0.84774</p_value>
<p_units>kg/m3</p_units>
<uncertainty><q_value>0.00041</q_value></uncertainty>
</property>
<property>
<p_name>ideal_wobbe_index</p_name>
<p_value>48.014</p_value>
<p_units>MJ/m3</p_units>
<uncertainty><q_value>0.016</q_value></uncertainty>
</property>
<property>
<p_name>ideal_net_wobbe_index</p_name>
<p_value>43.431</p_value>
<p_units>MJ/m3</p_units>
<uncertainty><q_value>0.015</q_value></uncertainty>
</property>
</method>
</properties>
</iso23219>
(справочное)
<?xml version="1.0" encoding="windows-1251" standalone="yes"?>
<iso23219>
<measurements>
<parameters>
<date_time>2019-09-29 12:00</date_time>
<cylinder_number>123456789</cylinder_number>
</parameters>
<peak>
<component>name_local>N2</name_local>
<amount><value>1.2222</value><units>mol%</units></amount></component>
<retention_time>46.3815</retention_time>
<peak_height>39584</peak_height><peak_area>9691</peak_area>
</peak>
<peak>
<component><name_local>CH4</name_local>
<amount><value>93.1482</value><units>mol%</units></amount></component>
<retention_time>46.8085</retention_time>
<peak_height>1169519</peak_height><peak_area>671559</peak_area>
</peak>
<peak>
<component><name_local>CO2</name_local>
<amount><value>1.4699</value><units>mol%</units></amount></component>
<retention_time>49.4959</retention_time>
<peak_height>27159</peak_height><peak_area>13070</peak_area>
</peak>
<peak>
<component><name_local>C2 </name_local>
<amount><value>2.5349</value><units>mol%</units></amount></component>
<retention_time>56.3184</retention_time>
<peak_height>45042</peak_height><peak_area>23319</peak_area>
</peak>
<peak>
<component><name_local>C3 </name_local>
<amount><value>1.1179</value><units>mol%</units></amount></component>
<retention_time>29.8825</retention_time>
<peak_height>47070</peak_height><peak_area>25108</peak_area>
</peak>
<peak>
<component><name_local>i-C4</name_local>
<amount><value>0.1486</value><units>mol%</units></amount></component>
<retention_time>32.2261</retention_time>
<peak_height>6409</peak_height><peak_area>3143</peak_area>
</peak>
<peak>
<component><name_local>n-C4</name_local>
<amount><value>0.0521</value><units>mol%</units></amount></component>
<retention_time>34.0489</retention_time>
<peak_height>2304</peak_height><peak_area>1142</peak_area>
</peak>
<peak>
<component><name local>neo-C5</name local>
<amount><value>0.3120</value><units>mol%</units></amount></component>
<retention_time>34.9656</retention_time>
<peak_height>11980</peak_height><peak_area>7048</peak_area>
</peak>
<peak>
<component><name_local>i-C5</name_local>
<amount><value>0.1004</value><units>mol%</units></amount></component>
<retention_time>40.1944</retention_time>
<peak_height>3713</peak_height><peak_area>2442</peak_area>
</peak>
<peak>
<component><name_local>n-C5</name_local>
<amount><value>0.2944</value><units>mol%</units></amount></component>
<retention_time>43.1004</retention_time>
<peak_height>10810</peak_height><peak_area>7151</peak_area>
</peak>
</measurements>
<measurements>
<parameters>
<date_time>2019-09-29 12:04</date_time>
<cylinder_number>123456789</cylinder_number>
</parameters>
<peak>
<component><name_local>N2</name_local>
<amount><value>1.2086</value><units>mol%</units></amount></component>
<retention_time>46.3607</retention_time>
<peak_height>39259</peak_height><peak_area>9583</peak_area>
</peak>
<peak>
<component><name_local>CH4</name_local>
<amount><value>93.1715</value><units>mol%</units></amount></component>
<retention_time>46.7877</retention_time>
<peak_height>1170776</peak_height><peak_area>671727</peak_area>
</peak>
<peak>
<component><name_local>CO2</name_local>
<amount><value>1.4713</value><units>mol%</units></amount></component>
<retention_time>49.4750</retention_time>
<peak_height>27233</peak_height><peak_area>13082</peak_area>
</peak>
<peak>
<component><name_local>C2</name_local>
<amount><value>2.5331</value><units>mol%</units></amount></component>
<retention_time>56.2871</retention_time>
<peak_height>45045</peak_height><peak_area>23302</peak_area>
</peak>
<peak>
<component><name_local>C3</name_local>
<amount><value>1.1376</value><units>mol%</units></amount></component>
<retention_time>29.8409</retention_time>
<peak_height>47119</peak_height><peak_area>25551</peak_area>
</peak>
<peak>
<component><name_local>i-C4</name_local>
<amount><value>0.1508</value><units>mol%</units></amount></component>
<retention_time>32.1949</retention_time>
<peak_height>6440</peak_height><peak_area>3190</peak_area>
</peak>
<peak>
<component><name_local>n-C4</name_local>
<amount><value>0.0518</value><units>mol%</units></amount></component>
<retention_time>34.0177</retention_time>
<peak_height>2315</peak_height><peak_area>1135</peak_area>
</peak>
<peak>
<component><name_local>neo-C5</name_local>
<amount><value>0.3121</value><units>mol%</units></amount></component>
<retention_time>34.9343</retention_time>
<peak_height>11990</peak_height><peak_area>7049</peak_area>
</peak>
<peak>
<component><name_local>i-C5</name_local>
<amount><value>0.1006</value><units>mol%</units></amount></component>
<retention_time>40.1423</retention_time>
<peak_height>3705</peak_height><peak_area>2446</peak_area>
</peak>
<peak>
<component><name_local>n-C5</name_local>
<amount><value>0.2954</value><units>mol%</units></amount></component>
<retention_time>43.0484</retention_time>
<peak_height>10844</peak_height><peak_area>7176</peak_area>
</peak>
</measurements>
<measurements>
<parameters>
<date_time>2019-09-29 12:08</date_time>
<cylinder_number>123456789</cylinder_number>
</parameters>
<peak>
<component><name_local>N2</name_local>
<amount><value>1.1994</value><units>mol%</units></amount></component>
<retention_time>46.3398</retention_time>
<peak_height>38999</peak_height><peak_area>9510</peak_area>
</peak>
<peak>
<component><name_local>CH4</name_local>
<amount><value>93.2378</value><units>mol%</units></amount></component>
<retention_time>46.7669</retention_time>
<peak_height>1169290</peak_height><peak_area>672205</peak_area>
</peak>
<peak>
<component><name_local>CO2</name_local>
<amount><value>1.4707</value><units>mol%</units></amount></component>
<retention_time>49.4542</retention_time>
<peak_height>iso27159</peak_height><peak_area>13077</peak_area>
</peak>
<peak>
<component><name_local>C2</name_local>
<amount><value>2.5355</value><units>mol%</units></amount></component>
<retention_time>56.2767</retention_time>
<peak_height>45088</peak_height><peak_area>23324</peak_area>
</peak>
<peak>
<component><name_local>C3</name_local>
<amount><value> 1.1399</value><units>mol%</units></amount></component>
<retention_time>29.8305</retention_time>
<peak_height>47144</peak_height><peak_area>25602</peak_area>
</peak>
<peak>
<component><name_local>i-C4 </name_local>
<amount><value>0.1480</value><units>mol%</units></amount></component>
<retention_time>32.1845</retention_time>
<peak_height>6399</peak_height><peak_area>3131</peak_area>
</peak>
<peak>
<component><name_local>n-C4</name_local>
<amount><value>0.0517</value><units>mol%</units></amount></component>
<retention_time>34.0073</retention_time>
<peak_height>2308</peak_height><peak_area>1134</peak_area>
</peak>
<peak>
<component><name_local>neo-C5</name_local>
<amount><value>0.3125</value><units>mol%</units></amount></component>
<retention_time>34.9239</retention_time>
<peak_height>12003</peak_height><peak_area>7058</peak_area>
</peak>
<peak>
<component><name_local>i-C5</name_local>
<amount><value>0.1001</value><units>mol%</units></amount></component>
<retention_time>40.1319</retention_time>
<peak_height>3715</peak_height><peak_area>2434</peak_area>
</peak>
<peak>
<component><name_local>n-C5</name_local>
<amount><value>0.2963</value><units>mol%</units></amount</component>
<retention_time>43.0380</retention_time>
<peak_height>10843</peak_height><peak_area>7196</peak_area>
</peak>
</measurements>
<measurements>
<parameters>
<date_time>2019-09-29 12:12</date_time>
<cylinder_number>123456789</cylinder_number>
</parameters>
<peak>
<component><name_local>N2</name_local>
<amount><value>1.1922</value><units>mol%</units></amount></component>
<retention_time>46.3607</retention_time>
<peak_height>38774</peak_height><peak_area>9453</peak_area>
</peak>
<peak>
<component><name_local>CH4</name_local>
<amount><value>93.2385</value><units>mol%</units></amount></component>
<retention_time>46.7877</retention_time>
<peak_height>1171548</peak_height><peak_area>672210</peak_area>
</peak>
<peak>
<component><name_local>CO2</name_local>
<amount><value>1.4706</value><units>mol%</units></amount></component>
<retention_time>49.4750</retention_time>
<peak_height>iso27178</peak_height><peak_area>13076</peak_area>
</peak>
<peak>
<component><name_local>C2</name_local>
<amount><value>2.5347</value><units>mol%</units></amount></component>
<retention_time>56.2975</retention time"
<peak_height>45083</peak height><peak_area>23317</peak_area>
</peak>
<peak>
<component><name_local>C3</name_local>
<amount><value>1.1332</value><units>mol%</units></amount></component>
<retention_time>29.8513</retention_time>
<peak_height>47084</peak_height><peak_area>25452</peak_area>
</peak>
<peak>
<component><name_local>i-C4</name_local>
<amount><value>0.1508</value><units>mol%</units></amount></component>
<retention_time>32.2053</retention_time>
<peak_height>6452</peak_height><peak_area>3189</peak_area>
</peak>
<peak>
<component><name_local>n-C4</name_local>
<amount><value>0.0522</value><units>mol%</units></amount></component>
<retention_time>34.0177</retention_time>
<peak_height>2322</peak_height><peak_area>1144</peak_area>
</peak>
<peak>
<component><name_local>neo-C5</name_local>
<amount><value>0.3128</value><units>mol%</units></amount></component>
<retention_time>34.9343</retention_time>
<peak_height>12001</peak_height><peak_area>7064</peak_area>
</peak>
<peak>
<component><name_local>i-C5</name_local>
<amount><value>0.1011</value><units>mol%</units></amount></component>
<retention_time>40.1319</retention_time>
<peak_height>3709</peak_height><peak_area>2459</peak_area>
</peak>
<peak>
<component><name_local>n-C5</name_local>
<amount><value>0.2957</value><units>mol%</units></amount></component>
<retention_time>43.0484</retention_time>
<peak_height>10848</peak_height><peak area>7183</peak_area>
</peak>
</measurements>
</iso23219>
(справочное)
Существуют доступные программы для обработки XML-данных, указанные ниже.
Как правило, написание текстового XML-файла не представляет значительных затруднений (необходимо удостовериться, что конечные теги точно соответствуют начальным тегам).
Считывание (синтаксический анализ) XML-данных является более сложным процессом.
Для считывания XML-данных существует функция импорта XML в стандартных программах обработки электронных таблиц, однако существуют и более мощные доступные анализаторы XML-файлов.
Например, для Microsoft Excel первые строки XML-файла должны быть следующими:
-<?xml version="1.0" encoding="windows-1251" standalone="yes"?>
<iso23219xmlns:xsi="/template/go.php?url=https://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="iso23219.xsd">
Затем в меню "файл" необходимо нажать функцию "открыть" и в выпадающем окне отметить меткой "Открыть как XML-таблицу".
Пример 1 - Код Microsoft Excel VBA для считывания состава из паспорта качества природного газа (например, приложение B):
Option Explicit
Sub main()
Dim mf$(0 To 12), cyl_no$, fileName$
fileName$ = "AnnexB.xml"
Call ReadISOxml(fileName$, cyl_no$, mf$)
MsgBox "Cyl.No. = [" & cyl_no$ & "]" & vbCrLf &_
"nC6 = " & mf$(0) & vbCrLf &_
"C3H8 = " & mf$(1) & vbCrLf &_
"iC4 = " & mf$(2) & vbCrLf &_
"nC4 = " & mf$(3) & vbCrLf &_
"neoC5 = " & mf$(4) & vbCrLf &_
"iC5 = " & mf$(5) & vbCrLf &_
"nC5 = " & mf$(6) & vbCrLf &_
"N2 = " & mf$(7) & vbCrLf &_
"CH4 = " & mf$(8) & vbCrLf &_
"CO2 = " & mf$(9) & vbCrLf &_
"C2H6 = " & mf$(10) & vbCrLf &_
"Total = " & mf$(11) & vbCrLf &_
"C.V. = " & mf$(12)
End Sub
Sub ReadISOxml(f$, cyl_no$, mf$())
Const maxLevel As Integer = 8
Dim a$, x$, value$, err$, LevelTag(1 To maxLevel) As String, All$
Dim ii As Long, jj As Long, kk As Long
Dim Level As Integer, tag As Integer, i As Integer, kComp As Integer
Dim InChI$(0 To 10)
InChI$(0) = "1S/C6H14/c1-3-5-6-4-2/h3-6H2,1-2H3"
InChI$(1) = "1S/C3H8/c1-3-2/h3H2,1-2H3"
InChI$(2) = "1S/C4H10/c1-4(2)3/h4H,1-3H3"
InChI$(3) = "1S/C4H10/c1-3-4-2/h3-4H2,1-2H3"
InChI$(4) = "1S/C5H12/c1-5(2,3)4/h1-4H3"
InChI$(5) = "1S/C5H12/c1-4-5(2)3/h5H,4H2,1-3H3"
InChI$(6) = "1S/C5H12/c1-3-5-4-2/h3-5H2,1-2H3"
InChI$(7) = "1S/N2/c1-2"
InChI$(8) = "1S/CH4/h1H4"
InChI$(9) = "1S/CO2/c2-1-3"
InChI$(10) = "1S/C2H6/c1-2/h1-2H3"
Open f$ For Input As #1
All$ = ""
While Not EOF(1)
Line Input #1, a$
If Left$(a$, 4) = "<!--Then commented line ignored(closing --> not required)
Else
Do
i = InStr(a$, vbTab): If (i > 0) Then Mid$(a$, i, 1) = ""
Loop Until i = 0
All$ = All$ & UCase$(Trim$(a$))
End If
Wend
Close #1
ii = 1:jj = 1:kk = 1: Level = 0: tag = 0: err$ = "": kComp = 0: value$ = ""
Do
ii = InStr(jj, All$, "<")
If ii = 0 Then Exit Do
jj = InStr(ii, All$, ">")
If jj = 0 Then err$ = err$ & "missing closing >": Exit Do
a$ = Trim$(Mid$(All$, ii + 1, jj - ii - 1))
If Left$(a$, 4) = "?XML" Or Left$(a$, 3) = "!--" Then
' header (or comment) - ignore
Elself Left$(a$, 1) = "/" Then
If Level < 1 Then Level = 1: err$ = err$ & vbCrLf & "minLevel"
If a$ <> "/" & LevelTag(Level) Then err$ = err$ & vbCrLf & "mismatch tag:" & a$ & "@/"
& LevelTag(Level)
x$ = Trim$(Mid$(All$, kk, ii - kk))
If tag = 1 Then
If a$ = "/iso23219" Then tag = 0
Elself tag = 2 Then
If a$ = "/MEASUREMENTS" Then tag = 1
Elself tag = 3 Then
If a$ = "/PEAK" Then tag = 2
Elself tag = 4 Then
If a$ = "/COMPONENT" Then tag = 3
Elself tag = 5 Then
If a$ = "/INCHI" Then
kComp = 0
For i = 0 To 10
If x$ = UCase$(InChI$(i)) Then kComp = i + 1: Exit For
Next i
If kComp = 0 Then err$ = err$ & vbCrLf & "invalid comp. name:" & x$
tag = 4
Elself a$ = "/AMOUNT" Then
If kComp > 0 Then mf$(kComp - 1) = value$: kComp = 0: value$ = ""
tag = 4
End If
Elself tag = 6 Then
If a$ = "/VALUE" Then
tag = 5: value$ = x$
Elself a$ = "/UNITS" Then
If x$ <> "MOL%" Then err$ = err$ & vbCrLf & "invalid units:" & x$
tag = 5
End If
Elself tag = 13 Then
If a$ = "/PARAMETERS" Then tag = 2
Elself tag = 14 Then
If a$ = "/CERTIFICATE_NUMBER" Then tag = 13
If a$ = "/CYLINDER_NUMBER" Then tag = 13: cyl_no$ = x$
Elself tag = 22 Then
If a$ = "/PROPERTIES" Then tag = 1
Elself tag = 23 Then
If a$ = "/METHOD" Then tag = 22
Elself tag = 24 Then
If a$ = "/PROPERTY" Then
If kComp = 13 Then mf$(kComp - 1) = value$: kComp = 0: value$ = "
tag = 23
End If
Elself tag = 25 Then
If a$ = "/P_NAME" Then
If x$ = "VOLUME_GROSS_CALORIFIC_VALUE" Then kComp = 13 Else kComp = 0
tag = 24
Elself a$ = "/P_VALUE" Then
tag = 24: value$ = x$
End If
End If
Level = Level - 1
Else
Level = Level + 1: If Level > maxLevel Then Level = maxLevel: err$ = err$ & vbCrLf
& "maxLevel"
LevelTag(Level) = a$
Select Case a$
End Select
kk = jj + 1
End If
Loop
If Level <> 0 Then err$ = err$ & vbCrLf & "ending level<>0"
If tag <> 0 Then err$ = err$ & vbCrLf & "ending tag<>0"
If Len(err$) > 0 Then MsgBox "XML error:" & err$
End Sub
Пример 2 - Код Microsoft Excel VBA с использованием объектной модели Microsoft Document Object Model (DOM) для чтения данных из файлов приложений D и C:
Sub ReadPeaks()
Dim oXML As Object, X As Object
Dim i As Integer, j As Integer, row As Integer, n As Integer, run As Integer
Dim Comp As Variant, td$()
Comp = Array("N2", "CO2", "CH4", "C2", "C3", "i-C4", "n-C4", "neo-C5", "i-C5", "n-C5")
Set oXML = CreateObject("Microsoft.XMLDOM") 'or Set oXML = CreateObject("MSXML2.DOMDocument")
oXML.async = True: oXML.validateOnParse = True
oXML.Load "AnnexD.xml"
If oXML.parseError <> 0 Then
MsgBox "XML file error:" & oXML.parseError.Reason & " at line " & oXML.parseError.
Line
Exit Sub
End If
Set X = oXML.SelectNodes("/iso23219/measurements/parameters")
ReDim td$(1 To X.Length)
For i = 1 To X. Length
td$(i) = "#N/A"
For j = 0 To X(i - 1).ChildNodes.Length - 1
If UCase$(X(i - 1).ChildNodes(j).Tagname) = "DATE_TIME" Then
td$(i) = X(i - 1).ChildNodes(j).Text: Exit For
End If
Next j
Next i
Set X = oXML.SelectNodes("/iso23219/measurements/peak")
row = 0
For n = 0 To UBound(Comp)
row = row + 1: Range("A" & row) = Comp(n): Range("B" & row) = "Peak Area": run = 0
For i = 0 To X.Length - 1
For j = 0 To X(i).ChildNodes.Length - 1
If UCase$(X(i).ChildNodes(j).Tagname) = "COMPONENT" Then Exit For
Next j
If j = X(i).ChildNodes.Length Then
MsgBox Comp(n) & " missing <component>": Exit Sub
End If
If UCase$(Comp(n)) = Left$(UCase$(Trim$(X(i).ChildNodes(j).Text)), Len(Comp(n)))
Then
For j = 0 To X(i).ChildNodes.Length - 1
If UCase$(X(i).ChildNodes(j).Tagname) = "PEAK_AREA" Then Exit For
Next j
If j = X(i).ChildNodes.Length Then
MsgBox Comp(n) & " missing <peak_area>": Exit Sub
End If
row = row + 1: Range("B" & row) = X(i).ChildNodes(j).Text
run = run + 1: Range("A" & row) = td$(run)
End If
Next i
Next n
MsgBox "done ReadPeaks"
End Sub
Sub ReadProps()
Dim oXML As Object, X As Object
Dim i As Integer, j As Integer
Set oXML = CreateObject("Microsoft.XMLDOM")
oXML.Load "AnnexC.xml"
Set X = oXML.SelectNodes("/iso23219/properties/method/property")
For i = 0 To X.Length - 1
For j = 0 To X(i).ChildNodes.Length - 1
Select Case UCase$(X(i).ChildNodes(j).Tagname)
Case "P_NAME": Range("A" & i + 1) = X(i).ChildNodes(j).Text
Case "P_VALUE": Range("B" & i + 1) = X(i).ChildNodes(j).Text
Case "P_UNITS": Range("C" & i + 1) = X(i).ChildNodes(j).Text
Case "UNCERTAINTY": Range("D" & i + 1) = X(i).ChildNodes(j).ChildNodes(0).Text
End Select
Next j
Next i
MsgBox "done ReadProps"
End Sub
(справочное)
В таблице F.1 приведен список международных химических идентификаторов, полученных в результате анализа природного газа.
Таблица F.1
(справочное)
ФИЗИКО-ХИМИЧЕСКИХ СВОЙСТВ И ИХ ЕДИНИЦЫ ИЗМЕРЕНИЯ
ДА.1 Наименования компонентов природного газа на русском языке приведены в таблице ДА.1.
ДА.2 Наименования физико-химических свойств природного газа на русском языке и их единицы измерения приведены в таблице ДА.2.
(справочное)
СТАНДАРТОВ МЕЖДУНАРОДНЫМ СТАНДАРТАМ, ИСПОЛЬЗОВАННЫМ
В КАЧЕСТВЕ ССЫЛОЧНЫХ В ПРИМЕНЕННОМ МЕЖДУНАРОДНОМ СТАНДАРТЕ
Таблица ДБ.1
Вернуться в "Каталог нормативных документов"
Источник информации: https://internet-law.ru/documents/prod/gost_gosudarstvennyj-standart/28/gost_64791.html
На правах рекламы:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||