Как экспортировать повторяющиеся элементы XML с атрибутами - PullRequest
0 голосов
/ 06 июля 2018

У меня есть лист Excel со списком данных, который я хочу экспортировать в XML:

https://imgur.com/a/dm3GT3l

У некоторых одинаковые идентификаторы, потому что они имеют особое отношение друг к другу. Я создал документ XML-схемы, который выглядит следующим образом:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="terms">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ID" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element type="xs:string" name="first-name" minOccurs="0" maxOccurs="unbounded" />
        <xs:element type="xs:string" name="name" minOccurs="0" maxOccurs="unbounded" />
        <xs:element type="xs:string" name="city" minOccurs="0" maxOccurs="unbounded" />
        <xs:element type="xs:string" name="gender" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attribute name="ID" type="xs:integer" />
    </xs:complexType>
  </xs:element>

В Excel я хочу экспортировать свои данные в XML-файл по следующей схеме:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<terms ID="1">
    <first-name>Peter</first-name>
    <name>xxx</name>
    <city>London</city>
    <gender>m</gender>
</terms>
<terms ID="1">
    <first-name>Lisa</first-name>
    <name>xxx</name>
    <city>New York</city>
    <gender>f</gender>
</terms>
<terms ID="2">
    <first-name>Dave</first-name>
    <name>xxx</name>
    <city>New York</city>
    <gender>m</gender>
</terms>

Excel запрещает экспорт, поскольку схема не может быть экспортирована. Как я могу экспортировать повторяющиеся атрибуты?

1 Ответ

0 голосов
/ 04 января 2019

Найдено определение схемы для экспорта моих данных и, возможно, также интересно для других:

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="terms">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="entry" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="entry">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="ID">
                    <xs:complexType />
                </xs:element>
                <xs:element name="first-name" type="xs:string" />
                <xs:element name="name" type="xs:string" />
                <xs:element name="city" type="xs:string" />
                <xs:element name="gender" type="xs:string" />
            </xs:sequence>
            <xs:attribute name="ID" />
        </xs:complexType>
    </xs:element>
</xs:schema>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...