Coder Social home page Coder Social logo

xml-schema's Introduction

xml-schema

Build Status Latest Version Coverage Status

Generate rust code (structures and enum) from XSD

Requirements

This project depends to other required libraries to start with, add them to your Cargo.toml.

Usage

In the entrypoint of your rust project, add these folowing lines:

#[macro_use]
extern crate yaserde_derive;

use std::io::prelude::*;
use xml_schema_derive::XmlSchema;
use yaserde::{YaDeserialize, YaSerialize};

Then implement the XSD using:

#[derive(Debug, XmlSchema)]
#[xml_schema(source = "path_to_schema.xsd", target_prefix = "my_prefix")]
struct MySchema;

Remark: the MySchema don't need to be public. It serve just as support of information.

Attributes

source: Source of the XSD - XML Schema. It can be local file (related to the root of the project) or an HTTP resource.
target_prefix: The schema not define any prefix. It the targetNamespace is declared in the schema, this attribute is required.
store_generated_code: Optional attribute for debug purpose. It store the generated Rust code into the file - the attribute value is the output filename.
log_level: To configure the logger level at the the compile time - usefull if the XSD generate some bugs. Values can be error, warn, info, debug, trace.
module_namespace_mapping: map a namespace to a Rust module. It can be present many times to map multiple namespaces to different Rust modules.

xml-schema's People

Contributors

borgoat avatar cschramm avatar dodomorandi avatar kurotakazuki avatar marcantoine-arnaud avatar marcelbuesing avatar matzipan avatar neldav avatar ryanavella avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

xml-schema's Issues

Recursive Types

While code for a schema with recursion is currently generated, it can not compile.
It can be fixed manually by saving the code with the store_generated_code option and then adding a Box around the compilation issue.

Furthermore a custom YaSerialize and YaDeserialize has to be implemented for every boxed type, because yaserde is not supporting Box currently.

Adding the boxed serialization can be done like this:

impl yaserde::YaDeserialize for Box<BoxedType> {
    fn deserialize<R: Read>(reader: &mut yaserde::de::Deserializer<R>) -> Result<Self, String> {
        BoxedType::deserialize(reader).map(Box::new)
    }
}

impl yaserde::YaSerialize for Box<BoxedType> {
    fn serialize<W: Write>(&self, writer: &mut yaserde::ser::Serializer<W>) -> Result<(), String> {
        BoxedType::serialize(&self, writer)
    }
}

Because I had no usecase for the attribute, I have no code example for the serialization of these.

An automatic wrapping of these types into Box would allow easier use of this crate.

Type "NMTOKEN" not implemented

I get this error when using #[derive(XmlSchema)] with this XSD: https://github.com/w3c/musicxml/blob/gh-pages/schema/musicxml.xsd

Info log: (click to expand)
2021-11-23 12:52:51,892 INFO  [xml_schema_derive::expander] XmlSchemaAttribute { log_level: Info, module_namespace_mappings: {}, source: "musicxml.xsd", store_generated_code: None, target_prefix: None }
2021-11-23 12:52:51,892 INFO  [xml_schema_derive::xsd] The current directory is /home/jendrik/dev/rust/pokemusic
2021-11-23 12:52:52,187 INFO  [xml_schema_derive::xsd::schema] Generate elements
2021-11-23 12:52:52,188 INFO  [xml_schema_derive::xsd::element] Generate element "part"
2021-11-23 12:52:52,188 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,188 INFO  [xml_schema_derive::xsd::element] Generate element "measure"
2021-11-23 12:52:52,188 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,188 INFO  [xml_schema_derive::xsd::schema] Generate simple types
2021-11-23 12:52:52,203 INFO  [xml_schema_derive::xsd::schema] Generate complex types
2021-11-23 12:52:52,203 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,203 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,204 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,204 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,204 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,204 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,204 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,205 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,205 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,205 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,205 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,205 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,205 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,205 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,205 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,205 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,205 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,205 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,206 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,206 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,206 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,206 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,206 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,206 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,206 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,206 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,206 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,206 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,206 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,206 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,207 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,207 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,207 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,207 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,207 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,207 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,207 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,207 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,208 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,208 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,208 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,209 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,209 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,209 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,209 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,209 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,209 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,210 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,210 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,210 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,210 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,210 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,210 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,210 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,210 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,210 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,211 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,211 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,211 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,211 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,211 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,212 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,212 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,212 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,212 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,212 INFO  [xml_schema_derive::xsd::element] Generate element "midi_channel"
2021-11-23 12:52:52,213 INFO  [xml_schema_derive::xsd::element] Generate element "midi_name"
2021-11-23 12:52:52,213 INFO  [xml_schema_derive::xsd::element] Generate element "midi_bank"
2021-11-23 12:52:52,213 INFO  [xml_schema_derive::xsd::element] Generate element "midi_program"
2021-11-23 12:52:52,213 INFO  [xml_schema_derive::xsd::element] Generate element "midi_unpitched"
2021-11-23 12:52:52,214 INFO  [xml_schema_derive::xsd::element] Generate element "volume"
2021-11-23 12:52:52,214 INFO  [xml_schema_derive::xsd::element] Generate element "pan"
2021-11-23 12:52:52,214 INFO  [xml_schema_derive::xsd::element] Generate element "elevation"
2021-11-23 12:52:52,214 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,214 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,214 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,215 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,215 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,215 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,215 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,215 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,215 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,215 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,215 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,215 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,215 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,215 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,216 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,216 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,216 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,216 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,216 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,216 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,216 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,216 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,217 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,217 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,217 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,217 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,217 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,218 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,218 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,218 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,218 INFO  [xml_schema_derive::xsd::element] Generate element "divisions"
2021-11-23 12:52:52,218 INFO  [xml_schema_derive::xsd::element] Generate element "key"
2021-11-23 12:52:52,218 INFO  [xml_schema_derive::xsd::element] Generate element "time"
2021-11-23 12:52:52,219 INFO  [xml_schema_derive::xsd::element] Generate element "staves"
2021-11-23 12:52:52,219 INFO  [xml_schema_derive::xsd::element] Generate element "part_symbol"
2021-11-23 12:52:52,219 INFO  [xml_schema_derive::xsd::element] Generate element "instruments"
2021-11-23 12:52:52,219 INFO  [xml_schema_derive::xsd::element] Generate element "clef"
2021-11-23 12:52:52,219 INFO  [xml_schema_derive::xsd::element] Generate element "staff_details"
2021-11-23 12:52:52,219 INFO  [xml_schema_derive::xsd::element] Generate element "directive"
2021-11-23 12:52:52,220 INFO  [xml_schema_derive::xsd::element] Generate element "measure_style"
2021-11-23 12:52:52,220 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,220 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,220 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,220 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,220 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,220 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,221 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,221 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,221 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,221 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,222 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,222 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,222 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,223 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,223 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,223 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,223 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,223 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,223 INFO  [xml_schema_derive::xsd::element] Generate element "part_clef"
2021-11-23 12:52:52,223 INFO  [xml_schema_derive::xsd::element] Generate element "part_transpose"
2021-11-23 12:52:52,223 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,224 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,224 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,224 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,224 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,224 INFO  [xml_schema_derive::xsd::element] Generate element "time_relation"
2021-11-23 12:52:52,224 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,225 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,225 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,225 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,225 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,225 INFO  [xml_schema_derive::xsd::element] Generate element "key_octave"
2021-11-23 12:52:52,225 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,226 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,226 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,226 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,226 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,226 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,227 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,227 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,227 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,227 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,227 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,228 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,228 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,228 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,228 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,228 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,229 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,229 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,229 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,229 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,229 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,229 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,229 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,229 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,230 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,230 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,230 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,230 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,230 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,230 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,231 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,231 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,231 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,231 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,231 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,231 INFO  [xml_schema_derive::xsd::element] Generate element "staff_type"
2021-11-23 12:52:52,232 INFO  [xml_schema_derive::xsd::element] Generate element "staff_tuning"
2021-11-23 12:52:52,232 INFO  [xml_schema_derive::xsd::element] Generate element "capo"
2021-11-23 12:52:52,232 INFO  [xml_schema_derive::xsd::element] Generate element "staff_size"
2021-11-23 12:52:52,232 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,233 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,233 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,233 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,233 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,233 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,233 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,233 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,234 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,234 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,234 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,234 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,235 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,235 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,235 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,235 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,235 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,235 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,236 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,236 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,236 INFO  [xml_schema_derive::xsd::element] Generate element "bar_style"
2021-11-23 12:52:52,236 INFO  [xml_schema_derive::xsd::element] Generate element "wavy_line"
2021-11-23 12:52:52,236 INFO  [xml_schema_derive::xsd::element] Generate element "segno"
2021-11-23 12:52:52,236 INFO  [xml_schema_derive::xsd::element] Generate element "coda"
2021-11-23 12:52:52,237 INFO  [xml_schema_derive::xsd::element] Generate element "fermata"
2021-11-23 12:52:52,237 INFO  [xml_schema_derive::xsd::element] Generate element "ending"
2021-11-23 12:52:52,237 INFO  [xml_schema_derive::xsd::element] Generate element "repeat"
2021-11-23 12:52:52,237 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,238 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,238 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,238 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,238 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,239 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,239 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,239 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,240 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,240 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,240 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,241 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,241 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,241 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,241 INFO  [xml_schema_derive::xsd::element] Generate element "accordion_high"
2021-11-23 12:52:52,241 INFO  [xml_schema_derive::xsd::element] Generate element "accordion_middle"
2021-11-23 12:52:52,241 INFO  [xml_schema_derive::xsd::element] Generate element "accordion_low"
2021-11-23 12:52:52,242 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,242 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,242 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,242 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,242 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,242 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,243 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,243 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,243 INFO  [xml_schema_derive::xsd::element] Generate element "bass_separator"
2021-11-23 12:52:52,243 INFO  [xml_schema_derive::xsd::element] Generate element "bass_step"
2021-11-23 12:52:52,243 INFO  [xml_schema_derive::xsd::element] Generate element "bass_alter"
2021-11-23 12:52:52,243 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,244 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,244 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,244 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,244 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,244 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,245 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,245 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,245 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,245 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,245 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,245 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,246 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,246 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,246 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,246 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,246 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,247 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,247 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,247 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,247 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,248 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,248 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,248 INFO  [xml_schema_derive::xsd::element] Generate element "degree_value"
2021-11-23 12:52:52,248 INFO  [xml_schema_derive::xsd::element] Generate element "degree_alter"
2021-11-23 12:52:52,248 INFO  [xml_schema_derive::xsd::element] Generate element "degree_type"
2021-11-23 12:52:52,248 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,249 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,249 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,249 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,249 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,249 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,249 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,249 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,250 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,250 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,250 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,250 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,251 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,251 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,251 INFO  [xml_schema_derive::xsd::element] Generate element "direction_type"
2021-11-23 12:52:52,251 INFO  [xml_schema_derive::xsd::element] Generate element "offset"
2021-11-23 12:52:52,251 INFO  [xml_schema_derive::xsd::element] Generate element "sound"
2021-11-23 12:52:52,251 INFO  [xml_schema_derive::xsd::element] Generate element "listening"
2021-11-23 12:52:52,252 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,252 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,252 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,252 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,252 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,252 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,252 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,252 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,253 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,253 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,253 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,253 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,253 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,253 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,254 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,254 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,254 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,254 INFO  [xml_schema_derive::xsd::element] Generate element "frame_strings"
2021-11-23 12:52:52,254 INFO  [xml_schema_derive::xsd::element] Generate element "frame_frets"
2021-11-23 12:52:52,254 INFO  [xml_schema_derive::xsd::element] Generate element "first_fret"
2021-11-23 12:52:52,254 INFO  [xml_schema_derive::xsd::element] Generate element "frame_note"
2021-11-23 12:52:52,255 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,255 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,255 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,255 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,255 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,255 INFO  [xml_schema_derive::xsd::element] Generate element "string"
2021-11-23 12:52:52,256 INFO  [xml_schema_derive::xsd::element] Generate element "fret"
2021-11-23 12:52:52,256 INFO  [xml_schema_derive::xsd::element] Generate element "fingering"
2021-11-23 12:52:52,256 INFO  [xml_schema_derive::xsd::element] Generate element "barre"
2021-11-23 12:52:52,256 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,256 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,256 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,257 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,257 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,257 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,257 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,257 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,257 INFO  [xml_schema_derive::xsd::element] Generate element "feature"
2021-11-23 12:52:52,257 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,258 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,258 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,258 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,258 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,258 INFO  [xml_schema_derive::xsd::element] Generate element "frame"
2021-11-23 12:52:52,258 INFO  [xml_schema_derive::xsd::element] Generate element "offset"
2021-11-23 12:52:52,258 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,259 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,259 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,259 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,259 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,259 INFO  [xml_schema_derive::xsd::element] Generate element "pedal_tuning"
2021-11-23 12:52:52,260 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,260 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,260 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,260 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,260 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,260 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,260 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,260 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,260 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,261 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,261 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,261 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,261 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,261 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,262 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,262 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,262 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,262 INFO  [xml_schema_derive::xsd::element] Generate element "offset"
2021-11-23 12:52:52,262 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,262 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,263 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,263 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,263 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,264 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,264 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,264 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,264 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,264 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,264 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,265 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,265 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,265 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,265 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,265 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,265 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,266 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,266 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,266 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,266 INFO  [xml_schema_derive::xsd::element] Generate element "metronome_type"
2021-11-23 12:52:52,266 INFO  [xml_schema_derive::xsd::element] Generate element "metronome_dot"
2021-11-23 12:52:52,267 INFO  [xml_schema_derive::xsd::element] Generate element "metronome_beam"
2021-11-23 12:52:52,267 INFO  [xml_schema_derive::xsd::element] Generate element "metronome_tied"
2021-11-23 12:52:52,267 INFO  [xml_schema_derive::xsd::element] Generate element "metronome_tuplet"
2021-11-23 12:52:52,267 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,267 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,267 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,268 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,268 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,268 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,268 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,268 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,268 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,268 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,269 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,269 INFO  [xml_schema_derive::xsd::element] Generate element "numeral_root"
2021-11-23 12:52:52,269 INFO  [xml_schema_derive::xsd::element] Generate element "numeral_alter"
2021-11-23 12:52:52,269 INFO  [xml_schema_derive::xsd::element] Generate element "numeral_key"
2021-11-23 12:52:52,269 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,269 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,269 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,269 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,270 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,270 INFO  [xml_schema_derive::xsd::element] Generate element "numeral_fifths"
2021-11-23 12:52:52,270 INFO  [xml_schema_derive::xsd::element] Generate element "numeral_mode"
2021-11-23 12:52:52,270 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,270 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,270 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,270 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,270 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,270 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,271 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,271 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,271 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,271 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,271 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,272 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,272 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,272 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,272 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,272 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,272 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,273 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,273 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,273 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,274 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,274 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,274 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,274 INFO  [xml_schema_derive::xsd::element] Generate element "pedal_step"
2021-11-23 12:52:52,274 INFO  [xml_schema_derive::xsd::element] Generate element "pedal_alter"
2021-11-23 12:52:52,275 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,275 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,275 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,275 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,275 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,275 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,275 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,275 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,275 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,275 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,275 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,276 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,276 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,276 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,276 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,277 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,277 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,277 INFO  [xml_schema_derive::xsd::element] Generate element "measure_layout"
2021-11-23 12:52:52,277 INFO  [xml_schema_derive::xsd::element] Generate element "measure_numbering"
2021-11-23 12:52:52,277 INFO  [xml_schema_derive::xsd::element] Generate element "part_name_display"
2021-11-23 12:52:52,277 INFO  [xml_schema_derive::xsd::element] Generate element "part_abbreviation_display"
2021-11-23 12:52:52,278 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,278 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,278 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,278 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,278 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,278 INFO  [xml_schema_derive::xsd::element] Generate element "root_step"
2021-11-23 12:52:52,278 INFO  [xml_schema_derive::xsd::element] Generate element "root_alter"
2021-11-23 12:52:52,278 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,279 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,279 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,279 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,279 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,279 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,279 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,279 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,279 INFO  [xml_schema_derive::xsd::element] Generate element "accord"
2021-11-23 12:52:52,279 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,279 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,280 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,280 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,280 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,280 INFO  [xml_schema_derive::xsd::element] Generate element "swing"
2021-11-23 12:52:52,280 INFO  [xml_schema_derive::xsd::element] Generate element "offset"
2021-11-23 12:52:52,280 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,282 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,282 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,283 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,283 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,283 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,283 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,283 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,283 INFO  [xml_schema_derive::xsd::element] Generate element "stick_type"
2021-11-23 12:52:52,284 INFO  [xml_schema_derive::xsd::element] Generate element "stick_material"
2021-11-23 12:52:52,284 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,284 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,284 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,285 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,285 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,285 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,285 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,285 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,285 INFO  [xml_schema_derive::xsd::element] Generate element "swing_style"
2021-11-23 12:52:52,285 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,285 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,285 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,286 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,286 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,286 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,286 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,286 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,287 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,287 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,287 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,288 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,288 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,288 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,288 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,289 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,289 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,289 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,289 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,289 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,289 INFO  [xml_schema_derive::xsd::element] Generate element "creator"
2021-11-23 12:52:52,289 INFO  [xml_schema_derive::xsd::element] Generate element "rights"
2021-11-23 12:52:52,289 INFO  [xml_schema_derive::xsd::element] Generate element "encoding"
2021-11-23 12:52:52,290 INFO  [xml_schema_derive::xsd::element] Generate element "source"
2021-11-23 12:52:52,290 INFO  [xml_schema_derive::xsd::element] Generate element "relation"
2021-11-23 12:52:52,290 INFO  [xml_schema_derive::xsd::element] Generate element "miscellaneous"
2021-11-23 12:52:52,290 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,290 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,290 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,291 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,291 INFO  [xml_schema_derive::xsd::sequence] Generate elements
2021-11-23 12:52:52,291 INFO  [xml_schema_derive::xsd::element] Generate element "miscellaneous_field"
2021-11-23 12:52:52,291 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,291 INFO  [xml_schema_derive::xsd::sequence] Generate sub types implementation
2021-11-23 12:52:52,291 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,291 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,291 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
2021-11-23 12:52:52,291 INFO  [xml_schema_derive::xsd::annotation] Generate annotation
2021-11-23 12:52:52,292 INFO  [xml_schema_derive::xsd::complex_type] Generate sequence
2021-11-23 12:52:52,292 INFO  [xml_schema_derive::xsd::complex_type] Generate simple content
error: proc-macro derive panicked
 --> src/musicxml.rs:3:17
  |
3 | #[derive(Debug, XmlSchema)]
  |                 ^^^^^^^^^
  |
  = help: message: Type "NMTOKEN" not implemented

Compilation error for type references inside a complex type

The following schema fails to compile:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:tns="http://www.example.com/books"
           targetNamespace="http://www.example.com/books">

    <xs:complexType name="BookDetails">
        <xs:sequence>
            <xs:element name="Title" type="xs:string"/>
            <xs:element name="Author" type="xs:string"/>
            <xs:element name="Year" type="xs:int"/>
        </xs:sequence>
    </xs:complexType>

    <!-- Works! -->
    <xs:element name="Book1" type="tns:BookDetails"/>

    <!-- Crashes with:
      cannot find type `BookDetails` in this scope
      help: consider importing this struct: crate::types::BookDetails -->
    <xs:element name="Book2">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="details" type="tns:BookDetails"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

The error is:

error[E0412]: cannot find type `BookDetails` in this scope
 --> src/main.rs:3:17
  |
3 | #[derive(Debug, XmlSchema)]
  |                 ^^^^^^^^^ not found in this scope
  |
  = help: consider importing this struct:
          crate::types::BookDetails

Most likely the code generator for complex types is creating a new scope/module but it doesn't use super::* or something similar.

Test case failures

failures:
    xsd::attribute::tests::optional_string_attribute
    xsd::attribute::tests::reference_type_attribute
    xsd::attribute::tests::string_attribute
    xsd::attribute::tests::type_attribute
    xsd::element::tests::extern_type
    xsd::element::tests::xs_string_element
    xsd::extension::tests::extension
    xsd::extension::tests::extension_with_attributes
    xsd::list::tests::basic_list
    xsd::schema::tests::generate_namespace
    xsd::simple_type::tests::simple_type

test result: FAILED. 23 passed; 11 failed; 0 ignored; 0 measured; 0 filtered out

error: test failed, to rerun pass '-p xml-schema-derive --lib'

These above test cases are failing in the current repository

Derive: Lists requires child type to implement `FromStr` and `Display`, which are not implemented

Attempting to generate types for this .xsd:
https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/schemas/edm.xsd

I get the compile errors:

error[E0277]: the trait bound `TPath: std::str::FromStr` is not satisfied
  --> src\main.rs:15:17
   |
15 | #[derive(Debug, XmlSchema)]
   |                 ^^^^^^^^^ the trait `std::str::FromStr` is not implemented for `TPath`
   |
   = note: this error originates in a derive macro (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0599]: no method named `to_string` found for reference `&TPath` in the current scope
  --> src\main.rs:15:17
   |
15 | #[derive(Debug, XmlSchema)]
   |                 ^^^^^^^^^
   |                 |
   |                 method not found in `&TPath`
   |                 doesn't satisfy `TPath: std::fmt::Display`
   |                 doesn't satisfy `TPath: std::string::ToString`
   |
   = note: the method `to_string` exists but the following trait bounds were not satisfied:
           `TPath: std::fmt::Display`
           which is required by `TPath: std::string::ToString`
           `&TPath: std::fmt::Display`
           which is required by `&TPath: std::string::ToString`
   = note: this error originates in a derive macro (in Nightly builds, run with -Z macro-backtrace for more info)

The relevant generated code looks like (note the .parse() and .to_string()):

#[derive(Clone, Debug, Default, PartialEq)]
pub struct TEnumMemberList {
    items: Vec<TPath>,
}
impl YaDeserialize for TEnumMemberList {
    fn deserialize<R: Read>(reader: &mut yaserde::de::Deserializer<R>) -> Result<Self, String> {
        loop {
            match reader.next_event()? {
                xml::reader::XmlEvent::StartElement { .. } => {}
                xml::reader::XmlEvent::Characters(ref text_content) => {
                    let items: Vec<TPath> = text_content
                        .split(' ')
                        .map(|item| item.to_owned())
                        .map(|item| item.parse().unwrap())
                        .collect();
                    return Ok(TEnumMemberList { items });
                }
                _ => {
                    break;
                }
            }
        }
        Err("Unable to parse attribute".to_string())
    }
}
impl YaSerialize for TEnumMemberList {
    fn serialize<W: Write>(&self, writer: &mut yaserde::ser::Serializer<W>) -> Result<(), String> {
        let content = self
            .items
            .iter()
            .map(|item| item.to_string())
            .collect::<Vec<String>>()
            .join(" ");
        let data_event = xml::writer::XmlEvent::characters(&content);
        writer.write(data_event).map_err(|e| e.to_string())?;
        Ok(())
    }
    fn serialize_attributes(
        &self,
        mut source_attributes: Vec<xml::attribute::OwnedAttribute>,
        mut source_namespace: xml::namespace::Namespace,
    ) -> Result<
        (
            Vec<xml::attribute::OwnedAttribute>,
            xml::namespace::Namespace,
        ),
        String,
    > {
        Ok((source_attributes, source_namespace))
    }
}
pub struct TPath {
    #[yaserde(text)]
    pub content: std::string::String,
}

Here is the code I'm using to derive, in case there's something wrong with it:

#[macro_use]
extern crate yaserde_derive;

use std::io::prelude::*;
use xml_schema_derive::XmlSchema;
use yaserde::{YaDeserialize, YaSerialize};

#[derive(Debug, XmlSchema)]
#[xml_schema(
    source = "https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/os/schemas/edm.xsd",
    target_prefix = "edm"
)]
struct EntityDataModel;

Avoid collision between elements and types

Take the following XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://test.test/">
  <xs:element name="hello" type="hello"/>
  <xs:complexType name="hello">
    <xs:all>
      <xs:element name="world">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="test1" minOccurs="0" type="xs:string"/>
            <xs:element name="test2" minOccurs="0" type="xs:int"/>
            <xs:element name="test3" minOccurs="0" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:all>
  </xs:complexType>
</xs:schema>

hello is both an element and a type, and AFAIK this is valid XSD. Unfortunately xml-schema-derive tries to create Hello two times in the same module, causing the proc_macro to panic.

Maybe the simplest thing would be to put all types in a pub mod types to avoid collisions, but this would also be a breaking change. What do you think?

Compilation errors and missing attributes for complex types

During some testing on the lib we've faced 2 problems:

Schema example:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:complexType name="ComplexElement">
        <xs:sequence>
            <xs:element name="Element" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>Some annotation</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="info" type="xs:string" minOccurs="0"/>
                    </xs:sequence>
                    <xs:attribute name="attrib" type="xs:string"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

The first problem is compilation errors for the above schema:

error: proc-macro derive panicked
  --> src/main.rs:11:17
   |
11 | #[derive(Debug, XmlSchema)]
   |                 ^^^^^^^^^
   |
   = help: message: not implemented
   = note: this error originates in a derive macro (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0277]: the trait bound `Element: YaDeserialize` is not satisfied
   --> src/main.rs:11:17
    |
11  | #[derive(Debug, XmlSchema)]
    |                 ^^^^^^^^^ the trait `YaDeserialize` is not implemented for `Element`
    | 
    |
101 |   fn deserialize<R: Read>(reader: &mut de::Deserializer<R>) -> Result<Self, String>;
    |                     ---- required by this bound in `deserialize`
    |
    = note: this error originates in a derive macro (in Nightly builds, run with -Z macro-backtrace for more info)

Another problem seems it ignores attributes for complex types. For the schema above if I set store_generated_code, I see the following output:

#[derive(Clone, Debug, Default, PartialEq, YaDeserialize, YaSerialize)] 
pub struct ComplexElement
{ 
  #[yaserde(rename = "Element")] 
  pub element : Option < Element >, 
}
#[doc = "Some annotation"]
#[derive(Clone, Debug, Default, PartialEq, YaDeserialize, YaSerialize)] 
pub struct Element
{ 
  #[yaserde(rename = "info")] 
  pub infos : Option < Vec < String > >, 
}

There is no attribute attrib in Element.

Also, I've found this problem in the existing test (https://github.com/media-io/xml-schema/blob/master/xml_schema/tests/complex_type.rs): attribute scope is missing.

Nested types not working

Hello,
I am trying to use this XSD file :
https://standards.iso.org/iso/15143/-3/ed-1/en/common.xsd

I was able to debug the problem to smallest example:

main.rs

use xml_schema_derive::XmlSchema;
fn main() {
    #[derive(Debug, XmlSchema,Default)]
    #[xml_schema(source = "test_pass.xsd",store_generated_code="output")]
    struct Test;
}

test_pass.xsd

<xs:schema         
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    version="1.0.0"
>
    <xs:element name="my_type2">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="member" type="string" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="my_type">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="member" type="string" />
                <xs:element name="my_type2" type="my_type2"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

test_fail.xsd

<xs:schema         
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    version="1.0.0"
>
    <xs:element name="my_type">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="member" type="string" />
                <xs:element name="my_type2">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="member" type="string" />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

with test_fail.xsd i get error

error[E0412]: cannot find type `my_type2` in this scope
 --> src/main.rs:7:21
  |
7 |     #[derive(Debug, XmlSchema,Default)]
  |                     ^^^^^^^^^ not found in this scope
  |
  = note: this error originates in the derive macro `XmlSchema` (in Nightly builds, run with -Z macro-backtrace for more info)

For more information about this error, try `rustc --explain E0412`.

One could think that these two result to same code?

Compilation error: `help: message: not implemented`

I want to use xml-schema with http://schemas.opengis.net/wms/1.3.0/capabilities_1_3_0.xsd and I tried with this example:

#[macro_use]
extern crate yaserde_derive;

use log::debug;
use std::io::prelude::*;
use xml_schema_derive::XmlSchema;
use yaserde::{YaDeserialize, YaSerialize};

#[derive(Debug, XmlSchema)]
#[xml_schema(source = "schemas/wms/capabilities_1_3_0.xsd", target_prefix = "wms")]
struct Wms;

fn main() {
    println!("Hello, world!");
}

but I get the following error:

error: proc-macro derive panicked
 --> src/main.rs:9:17
  |
9 | #[derive(Debug, XmlSchema)]
  |                 ^^^^^^^^^
  |
  = help: message: not implemented

My Cargo.toml has:

[dependencies]
yaserde_derive = "0.4.1"
yaserde = "0.4.1"
xml-schema-derive = "0.0.3"
xml-schema = "0.0.3"
xml-rs = "0.8.3"
log = "0.4.8"

The package repository settings are boken

Fix these package settings, please. These URLs are 404 NOT FOUND now. In minutes ago, I was need find and identification the repos from old URL. ๐Ÿคฃ

image


It's easy to fix, but I don't know what you want to set it correctly such as repos top or workspace dirs or README files. Thus, I would not PR.

Derive macro panicks on anyType

Hi,
while trying to derive structs from some xsd I experienced a panic in the derive macro with an unhelpful message:

error: proc-macro derive panicked
  --> src/main.rs:16:17
   |
16 | #[derive(Debug, XmlSchema)]
   |                 ^^^^^^^^^
   |
   = help: message: called `Option::unwrap()` on a `None` value

I tracked down the problem in the handling of anyType.

This is the minimal reproducible xsd that I could come up with:

<?xml version="1.0" encoding="UTF-8"?>

<schema xmlns="http://www.w3.org/2001/XMLSchema">

    <complexType name="mixedType">
        <complexContent>
            <restriction base="anyType"></restriction>
        </complexContent>
    </complexType>

</schema>

The panick is triggered by this unwrap:

Some identifiers are not supported

#[macro_use]
extern crate yaserde_derive;

use log::debug;
use std::io::prelude::*;
use xml_schema_derive::XmlSchema;
use yaserde::{YaDeserialize, YaSerialize};

#[derive(Debug, XmlSchema)]
#[xml_schema(source = "a.xsd")]
struct SimpleTypeSchema;

fn main() {}

Example 1:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="a">
    <xs:sequence>
      <xs:element name="b">
        <xs:complexType>
          <xs:sequence>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:schema>
error[E0433]: failed to resolve: use of undeclared type or module `b`
 --> src/main.rs:9:17
  |
9 | #[derive(Debug, XmlSchema)]
  |                 ^^^^^^^^^ use of undeclared type or module `b`
  |
  = note: this error originates in a derive macro (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0412]: cannot find type `b` in this scope
 --> src/main.rs:9:17
  |
9 | #[derive(Debug, XmlSchema)]
  |                 ^^^^^^^^^
  |                 |
  |                 similarly named struct `B` defined here
  |                 help: a struct with a similar name exists: `B`

Example 2:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="a">
    <xs:sequence>
      <xs:element name="ref">
        <xs:complexType>
          <xs:sequence>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:schema>
error: expected identifier, found keyword `ref`
 --> src/main.rs:9:17
  |
9 | #[derive(Debug, XmlSchema)]
  |                 ^^^^^^^^^ expected identifier, found keyword
  |
  = note: this error originates in a derive macro (in Nightly builds, run with -Z macro-backtrace for more info)
help: you can escape reserved keywords to use them as identifiers
  |
9 | #[derive(Debug, r#ref)]
  |                 ^^^^^

error: expected type, found keyword `ref`
 --> src/main.rs:9:17
  |
9 | #[derive(Debug, XmlSchema)]
  |                 ^^^^^^^^^ expected type
  |

Example 3:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="a">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="b.c" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
error: proc-macro derive panicked
 --> src/main.rs:9:17
  |
9 | #[derive(Debug, XmlSchema)]
  |                 ^^^^^^^^^
  |
  = help: message: `"b.cs"` is not a valid identifier

maxOccurs not taken into account

Hi,

I was about to make some tests and started with following schema:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:complexType name="MySampleType">
        <xs:sequence>
            <xs:element name="Greeting" type="xs:string" />
            <xs:element name="items" type="ItemsType" />
        </xs:sequence>
        <xs:attribute name="SequenceNumber" type="xs:string" />
        <xs:attribute name="Timestamp" type="xs:string" />
    </xs:complexType>
    <xs:complexType name="ItemsType">
        <xs:sequence>
            <xs:element name="ListItem" type="xs:string" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>
</xs:schema>

which resulted in following code:

#[derive(Clone, Debug, Default, PartialEq, YaDeserialize, YaSerialize)] 
pub struct MySampleType {
    #[yaserde(rename = "Greeting")]
    pub greeting : String,
    #[yaserde(rename = "items")]
    pub items : ItemsType,
    #[yaserde(attribute, rename = "SequenceNumber")]
    pub sequence_number : Option<String>, 
    #[yaserde(attribute, rename = "Timestamp")] 
    pub timestamp : Option<String>,
} 
#[derive(Clone, Debug, Default, PartialEq, YaDeserialize, YaSerialize)]
pub struct ItemsType { 
    #[yaserde(rename = "ListItem")]
    pub list_item : String, 
}

Here you can see that ItemsType should contain list_item : Vec<String> instead of String

I think that the problem is here:
https://github.com/media-io/xml-schema/blob/master/xml_schema_derive/src/xsd/sequence.rs
line 25. IMO this should pass true if element.max_occurences is Unbounded, like

.map(|element| element.get_field_implementation(context, prefix, match element.max_occurences {
    MaxOccurences::Unbounded => true,
    MaxOccurences::Number(value) => value > 1,
    _ => false,
}))

Best Regards,
jskop

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.