удобный для пользователя способ создания XML-файлов из файлов .xsd * без кодирования для пользователя*

#xml #xsd #metadata

#xml #xsd #метаданные

Вопрос:

Я не совсем уверен, как объяснить этот вопрос, но я сделаю все возможное, чтобы прояснить его. В настоящее время я пишу файл .xsd для создания файла метаданных для наборов данных. Когда я пытаюсь использовать его для отображения в Excel, возникают ошибки, которые исчезают, только если я задаю форму действительно беспорядочным и не удобным для пользователя способом. Мне просто интересно, есть ли удобный для пользователя способ, чтобы другие могли генерировать файлы метаданных XML из моей схемы? У людей, использующих его, не будет большого опыта кодирования, и он будет использоваться для множества разных наборов данных.

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="Data-set">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name= "DataUniqueIdentifier"/>
                <xsd:element minOccurs="0" maxOccurs="1" name="ProjectInformation">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="ProjectName"/>
                            <xsd:element name="ProjectCode"/>
                            <xsd:element name="ProjectLead"/>
                            <xsd:element minOccurs ="0" maxOccurs ="unbounded" name ="ProjectSponsors"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
                <xsd:element minOccurs="0" maxOccurs="unbounded" name="Authors">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="LastName"/>
                            <xsd:element name="FirstName"/>
                            <xsd:element name="Email"/>
                            <xsd:element name="Affiliation"/>
                            <xsd:element name="Role"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
                <xsd:element minOccurs="0" maxOccurs="1" name="DataInformation">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name="DatasetTitle"/>
                            <xsd:element name="StudyStartDate" type="xsd:date"/>
                            <xsd:element name="StudyEndDate" type="xsd:date"/>
                            <xsd:element name="EstimatedStudyCompletionDate" type="xsd:date"/>
                            <xsd:element name="PublicationDate" type="xsd:date"/>
                            <xsd:element name="DataLocation" type="xsd:string"/>
                            <xsd:element minOccurs ="0" maxOccurs ="5" name ="Keywords"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>  
                <xsd:element name= "DataUsageRights" type="xsd:string"/>
                <xsd:element minOccurs="0" maxOccurs="1" name="DataAbstract">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element minOccurs ="0" maxOccurs ="unbounded" name ="InstrumentsUsed"/>
                            <xsd:element minOccurs ="0" maxOccurs ="unbounded" name ="AquisitionMethods"/>
                            <xsd:element minOccurs ="0" maxOccurs ="unbounded" name ="ProcessingMethods"/>
                            <xsd:element minOccurs ="0" maxOccurs ="unbounded" name ="SoftwareUsed"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
                <xsd:element minOccurs="0" maxOccurs="1" name="DataDescription">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name ="Completion"/>
                            <xsd:element name ="ObservationCount"/>
                            <xsd:element name ="VariableCount"/>
                            <xsd:element name ="NACount"/>
                            <xsd:element name ="DatasetState"/>
                            <xsd:element minOccurs ="0" maxOccurs ="unbounded" name ="AnalysisPerformed"/>
                            <xsd:element minOccurs ="0" maxOccurs ="unbounded" name ="PapersPublished"> #ISSUE
                                <xsd:complexType>
                                    <xsd:sequence>
                                        <xsd:element name ="PaperTitle"/> #ISSUE
                                        <xsd:element name ="URL"/> #ISSUE
                                    </xsd:sequence>
                                </xsd:complexType>
                            </xsd:element>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
                <xsd:element minOccurs="0" maxOccurs="unbounded" name="DataDescriptors">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name ="VariableName"/>
                            <xsd:element name ="DataType"/>
                            <xsd:element name ="VariableDescription"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
                <xsd:element minOccurs="0" maxOccurs="1" name="DataFileInformation">
                    <xsd:complexType>
                        <xsd:sequence>
                            <xsd:element name ="FileFormat"/>
                            <xsd:element name ="FileSize"/>
                        </xsd:sequence>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>  
    </xsd:element>
</xsd:schema>
 

Надеюсь, я объяснил это достаточно хорошо, любая помощь будет принята с благодарностью.

Ответ №1:

Ваш вопрос очень открытый, и, похоже, к нему не прилагается много подробностей. Поэтому будет сложно ответить на этот вопрос так, чтобы он подходил именно вам.

Если я правильно понимаю ваш вопрос, вы говорите о ситуации, когда у вас есть XML-схема (XSD), и вы хотите «сгенерировать» XML-файл на основе этой схемы без какого-либо кодирования.

На ум приходят редакторы на основе графического интерфейса, такие как OxygenXML, которые позволяют загружать XSD, а затем предоставлять автозаполнение, «представления сетки» и другие инструменты, упрощающие / упрощающие написание XML-базы на XSD. Кроме того, проверка XSD также встроена прямо в редактор. Существуют альтернативы OxygenXML, которые вы легко найдете в Интернете, ища такие вещи, как редактор XML, разработка XML, XML IDE и тому подобное.

Если этот ответ вам не поможет, я бы рекомендовал вам добавить больше информации к вашим вопросам.

Комментарии:

1. Привет, Джоэл, спасибо за ответ. Я знал, что ответить на этот вопрос будет сложно, поскольку я изо всех сил пытался его сформулировать. Это соответствует тому, что я ищу. Я в порядке с настройкой кодирования, оно просто должно быть аккуратным и простым в использовании для конечного пользователя, поскольку у них практически не будет опыта кодирования. Я рассмотрю эти варианты и свяжусь с вами.

Ответ №2:

У Oxygen есть инструмент для создания экземпляра документа из схемы. С небольшой настройкой параметров я сгенерировал этот экземпляр:

 <?xml version="1.0" encoding="UTF-8"?>
<Data-set xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation="file:/Users/mike/Desktop/temp/test.xsd">
   <DataUniqueIdentifier>
   </DataUniqueIdentifier>
   <ProjectInformation>
      <ProjectName>
      </ProjectName>
      <ProjectCode>
      </ProjectCode>
      <ProjectLead>
      </ProjectLead>
      <ProjectSponsors>
      </ProjectSponsors>
      <ProjectSponsors>
      </ProjectSponsors>
   </ProjectInformation>
   <Authors>
      <LastName>
      </LastName>
      <FirstName>
      </FirstName>
      <Email>
      </Email>
      <Affiliation>
      </Affiliation>
      <Role>
      </Role>
   </Authors>
   <Authors>
      <LastName>
      </LastName>
      <FirstName>
      </FirstName>
      <Email>
      </Email>
      <Affiliation>
      </Affiliation>
      <Role>
      </Role>
   </Authors>
   <DataInformation>
      <DatasetTitle>
      </DatasetTitle>
      <StudyStartDate>2006-05-04</StudyStartDate>
      <StudyEndDate>2006-05-04</StudyEndDate>
      <EstimatedStudyCompletionDate>2006-05-04</EstimatedStudyCompletionDate>
      <PublicationDate>2006-05-04</PublicationDate>
      <DataLocation>DataLocation0</DataLocation>
      <Keywords>
      </Keywords>
      <Keywords>
      </Keywords>
   </DataInformation>
   <DataUsageRights>DataUsageRights0</DataUsageRights>
   <DataAbstract>
      <InstrumentsUsed>
      </InstrumentsUsed>
      <InstrumentsUsed>
      </InstrumentsUsed>
      <AquisitionMethods>
      </AquisitionMethods>
      <AquisitionMethods>
      </AquisitionMethods>
      <ProcessingMethods>
      </ProcessingMethods>
      <ProcessingMethods>
      </ProcessingMethods>
      <SoftwareUsed>
      </SoftwareUsed>
      <SoftwareUsed>
      </SoftwareUsed>
   </DataAbstract>
   <DataDescription>
      <Completion>
      </Completion>
      <ObservationCount>
      </ObservationCount>
      <VariableCount>
      </VariableCount>
      <NACount>
      </NACount>
      <DatasetState>
      </DatasetState>
      <AnalysisPerformed>
      </AnalysisPerformed>
      <AnalysisPerformed>
      </AnalysisPerformed>
      <PapersPublished>
         <PaperTitle>
         </PaperTitle>
         <URL>
         </URL>
      </PapersPublished>
      <PapersPublished>
         <PaperTitle>
         </PaperTitle>
         <URL>
         </URL>
      </PapersPublished>
   </DataDescription>
   <DataDescriptors>
      <VariableName>
      </VariableName>
      <DataType>
      </DataType>
      <VariableDescription>
      </VariableDescription>
   </DataDescriptors>
   <DataDescriptors>
      <VariableName>
      </VariableName>
      <DataType>
      </DataType>
      <VariableDescription>
      </VariableDescription>
   </DataDescriptors>
   <DataFileInformation>
      <FileFormat>
      </FileFormat>
      <FileSize>
      </FileSize>
   </DataFileInformation>
</Data-set>
 

который пользователи могут счесть полезным в качестве шаблона для редактирования. Это то, что вы имели в виду?

Конечно, вы можете изменить шаблон, например, добавив комментарии, указывающие, что означают поля.

Но на самом деле вы хотите создать форму (возможно, с использованием XForms), которая позволяет пользователям вводить данные, не видя никаких угловых скобок.