[Feature] Minimal IUCLID export (#338)

This is an initial implementation that creates a working minimal .i6z document.
It passes schema validation and can be imported into IUCLID.

Caveat:
IUCLID files target individual compounds.
Pathway is not actually covered by the format.

It can be added in either soil or water and soil OECD endpoints.
**I currently only implemented the soil endpoint for all data.**

This sort of works, and I can report all degradation products in a pathway (not a nice view, but we can report many transformation products and add a diagram attachment in the future).

Adding additional information is an absolute pain, as we need to explicitly map each type of information to the relevant OECD field.
I use the XSD scheme for validation, but unfortunately the IUCLID parser is not fully compliant and requires a specific order, etc.

The workflow is: finding the AI structure from the XSD scheme -> make the scheme validation pass -> upload to IUCLID to get obscure error messages -> guess what could be wrong -> repeat 💣

New specifications get released once per year, so we will have to update accordingly.
I believe that this should be a more expensive feature, as it requires significant effort to uphold.

Currently implemented for root compound only in SOIL:

- Soil Texture 2
- Soil Texture 1
- pH value
- Half-life per soil sample / scenario (mapped to disappearance; not sure about that).
- CEC
- Organic Matter (only Carbon)
- Moisture content
- Humidity

<img width="2123" alt="image.png" src="attachments/d29830e1-65ef-4136-8939-1825e0959c62">
<img width="2124" alt="image.png" src="attachments/ac9de2ac-bf68-4ba4-b40b-82f810a9de93">
<img width="2139" alt="image.png" src="attachments/5674c7e6-865e-420e-974a-6b825b331e6c">

Reviewed-on: enviPath/enviPy#338
Co-authored-by: Tobias O <tobias.olenyi@envipath.com>
Co-committed-by: Tobias O <tobias.olenyi@envipath.com>
This commit is contained in:
2026-04-07 19:46:12 +12:00
committed by jebus
parent f7c45b8015
commit d06bd0d4fd
49 changed files with 66402 additions and 1014 deletions

View File

@ -0,0 +1,90 @@
"""Load and cache IUCLID XSD schemas with cross-reference resolution.
The bundled XSD schemas use bare ``schemaLocation`` filenames (e.g.
``platform-fields.xsd``, ``commonTypesDomainV10.xsd``) that don't match the
actual directory layout. This module builds an explicit namespace → file-path
mapping so that ``xmlschema`` can resolve every import.
"""
from __future__ import annotations
from functools import lru_cache
from pathlib import Path
import xmlschema
_SCHEMA_ROOT = Path(__file__).resolve().parent / "v10"
# Namespace → relative file-path (from _SCHEMA_ROOT) for schemas that are
# referenced by bare filename from subdirectories that don't contain them.
_NS_LOCATIONS: dict[str, str] = {
"http://iuclid6.echa.europa.eu/namespaces/platform-fields/v1": "platform-fields.xsd",
"http://iuclid6.echa.europa.eu/namespaces/platform-metadata/v1": "platform-metadata.xsd",
"http://iuclid6.echa.europa.eu/namespaces/platform-container/v2": "platform-container-v2.xsd",
"http://iuclid6.echa.europa.eu/namespaces/platform-attachment/v1": "platform-attachment.xsd",
"http://iuclid6.echa.europa.eu/namespaces/platform-modification-history/v1": (
"platform-modification-history.xsd"
),
"http://www.w3.org/1999/xlink": "xlink.xsd",
"http://www.w3.org/XML/1998/namespace": "xml.xsd",
"http://iuclid6.echa.europa.eu/namespaces/domain/v10": ("domain/v10/commonTypesDomainV10.xsd"),
"http://iuclid6.echa.europa.eu/namespaces/oecd/v10": ("oecd/v10/commonTypesOecdV10.xsd"),
}
# doc_type → (subdir, filename-pattern)
_DOC_TYPE_PATHS: dict[str, tuple[str, str]] = {
"SUBSTANCE": ("domain/v10", "SUBSTANCE-10.0.xsd"),
"REFERENCE_SUBSTANCE": ("domain/v10", "REFERENCE_SUBSTANCE-10.0.xsd"),
}
def _absolute_locations() -> list[tuple[str, str]]:
"""Return (namespace, absolute-file-URI) pairs for all known schemas."""
return [(ns, (_SCHEMA_ROOT / rel).as_uri()) for ns, rel in _NS_LOCATIONS.items()]
def _esr_path(subtype: str) -> Path:
"""Return the path to an Endpoint Study Record schema."""
return _SCHEMA_ROOT / "oecd" / "v10" / f"ENDPOINT_STUDY_RECORD-{subtype}-10.0.xsd"
def _doc_type_path(doc_type: str, subtype: str | None = None) -> Path:
if doc_type == "ENDPOINT_STUDY_RECORD":
if not subtype:
raise ValueError("subtype is required for ENDPOINT_STUDY_RECORD schemas")
return _esr_path(subtype)
info = _DOC_TYPE_PATHS.get(doc_type)
if info is None:
raise ValueError(f"Unknown document type: {doc_type}")
subdir, filename = info
return _SCHEMA_ROOT / subdir / filename
@lru_cache(maxsize=32)
def get_content_schema(doc_type: str, subtype: str | None = None) -> xmlschema.XMLSchema:
"""Return a compiled XSD schema for validating content elements.
Parameters
----------
doc_type:
IUCLID document type (``SUBSTANCE``, ``REFERENCE_SUBSTANCE``,
``ENDPOINT_STUDY_RECORD``).
subtype:
Required for ``ENDPOINT_STUDY_RECORD`` (e.g. ``BiodegradationInSoil``).
"""
path = _doc_type_path(doc_type, subtype)
return xmlschema.XMLSchema(str(path), locations=_absolute_locations())
@lru_cache(maxsize=1)
def get_document_schema() -> xmlschema.XMLSchema:
"""Return a compiled XSD schema for the ``platform-container-v2`` wrapper.
This validates the full ``<Document>`` element (PlatformMetadata + Content +
Attachments + ModificationHistory). Content is validated with
``processContents="strict"`` via ``xs:any``, but only if the content
namespace has been loaded. For full content validation, use
:func:`get_content_schema` separately.
"""
path = _SCHEMA_ROOT / "platform-container-v2.xsd"
return xmlschema.XMLSchema(str(path), locations=_absolute_locations())

View File

@ -0,0 +1,237 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://iuclid6.echa.europa.eu/namespaces/REFERENCE_SUBSTANCE/10.0" xmlns:ct="http://iuclid6.echa.europa.eu/namespaces/domain/v10" xmlns:i6="http://iuclid6.echa.europa.eu/namespaces/platform-fields/v1" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://iuclid6.echa.europa.eu/namespaces/REFERENCE_SUBSTANCE/10.0">
<xs:import namespace="http://iuclid6.echa.europa.eu/namespaces/platform-fields/v1" schemaLocation="platform-fields.xsd"/>
<xs:import namespace="http://iuclid6.echa.europa.eu/namespaces/domain/v10" schemaLocation="commonTypesDomainV10.xsd"/>
<xs:element name="REFERENCE_SUBSTANCE">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="DataProtection">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:baseDataProtectionField">
<xs:sequence>
<xs:element minOccurs="0" name="confidentiality" type="ct:N64"/>
<xs:element minOccurs="0" name="justification" type="i6:textField"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="legislation">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="value" type="ct:N78"/>
<xs:element minOccurs="0" name="other" type="i6:textFieldSmall"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="ReferenceSubstanceName">
<xs:simpleType>
<xs:restriction base="i6:textFieldMultiLine">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="0" name="IupacName" type="i6:textFieldMultiLine"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="Description" type="i6:multilingualTextFieldLarge"/>
<xs:element minOccurs="0" name="Inventory">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="InventoryEntry">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="entry" type="i6:inventoryEntry"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="InventoryEntryJustification">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:basePicklistField">
<xs:sequence>
<xs:element minOccurs="0" name="value" type="ct:N95"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="other" type="i6:multilingualTextFieldSmall"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="remarks" type="i6:multilingualTextField"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="CASNumber" type="i6:textFieldSmall"/>
<xs:element minOccurs="0" name="CASName" type="i6:textFieldMultiLine"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="Synonyms">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Synonyms">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="entry">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:repeatableEntryType">
<xs:sequence>
<xs:element minOccurs="0" name="DataProtection">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:baseDataProtectionField">
<xs:sequence>
<xs:element minOccurs="0" name="confidentiality" type="ct:N64"/>
<xs:element minOccurs="0" name="justification" type="i6:textField"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="legislation">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="value" type="ct:N78"/>
<xs:element minOccurs="0" name="other" type="i6:textFieldSmall"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="Identifier">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:basePicklistField">
<xs:sequence>
<xs:element minOccurs="0" name="value" type="ct:PG6_60192"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="other" type="i6:multilingualTextFieldSmall"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="Name" type="i6:textFieldMultiLine"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="Remarks" type="i6:multilingualTextFieldSmall"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="MolecularStructuralInfo">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="DataProtection">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:baseDataProtectionField">
<xs:sequence>
<xs:element minOccurs="0" name="confidentiality" type="ct:N64"/>
<xs:element minOccurs="0" name="justification" type="i6:textField"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="legislation">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="value" type="ct:N78"/>
<xs:element minOccurs="0" name="other" type="i6:textFieldSmall"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="MolecularFormula" type="i6:textFieldMultiLine"/>
<xs:element minOccurs="0" name="MolecularWeightRange">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:basePhysicalQuantityRangeField">
<xs:sequence>
<xs:element minOccurs="0" name="lowerQualifier" type="i6:lowerQualifier"/>
<xs:element minOccurs="0" name="upperQualifier" type="i6:upperQualifier"/>
<xs:element minOccurs="0" name="lowerValue" type="xs:decimal"/>
<xs:element minOccurs="0" name="upperValue" type="xs:decimal"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="SmilesNotation" type="i6:textFieldMultiLine"/>
<xs:element minOccurs="0" name="InChl" type="i6:textFieldMultiLine"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="InChIKey" type="i6:multilingualTextFieldSmall"/>
<xs:element minOccurs="0" name="StructuralFormula" type="i6:attachmentField"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="Remarks" type="i6:multilingualTextFieldLarge"/>
<xs:element minOccurs="0" name="ChemicalStructureFiles">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="entry">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:repeatableEntryType">
<xs:sequence>
<xs:element minOccurs="0" name="StructureFile" type="i6:attachmentField"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="RemarksChemStruct" type="i6:multilingualTextFieldSmall"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="RelatedSubstances">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="RelatedSubstances">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="entry">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:repeatableEntryType">
<xs:sequence>
<xs:element minOccurs="0" name="Identifier">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:basePicklistField">
<xs:sequence>
<xs:element minOccurs="0" name="value" type="ct:PG6_60192"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="other" type="i6:multilingualTextFieldSmall"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="Identity" type="i6:textFieldLarge"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="Remarks" type="i6:multilingualTextFieldSmall"/>
<xs:element minOccurs="0" name="Relation">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:basePicklistField">
<xs:sequence>
<xs:element minOccurs="0" name="value" type="ct:N05"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="other" type="i6:multilingualTextFieldSmall"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element maxOccurs="unbounded" minOccurs="0" name="GroupCategoryInfo" type="i6:multilingualTextFieldMultiLine"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -0,0 +1,266 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://iuclid6.echa.europa.eu/namespaces/SUBSTANCE/10.0" xmlns:ct="http://iuclid6.echa.europa.eu/namespaces/domain/v10" xmlns:i6="http://iuclid6.echa.europa.eu/namespaces/platform-fields/v1" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://iuclid6.echa.europa.eu/namespaces/SUBSTANCE/10.0">
<xs:import namespace="http://iuclid6.echa.europa.eu/namespaces/platform-fields/v1" schemaLocation="platform-fields.xsd"/>
<xs:import namespace="http://iuclid6.echa.europa.eu/namespaces/domain/v10" schemaLocation="commonTypesDomainV10.xsd"/>
<xs:element name="SUBSTANCE">
<xs:complexType>
<xs:sequence>
<xs:element name="Templates">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="Template" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ChemicalName">
<xs:simpleType>
<xs:restriction base="i6:textFieldMultiLine">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="0" name="PublicName" type="i6:textFieldMultiLine"/>
<xs:element minOccurs="0" name="OtherNames">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="entry">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:repeatableEntryType">
<xs:sequence>
<xs:element minOccurs="0" name="DataProtection">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:baseDataProtectionField">
<xs:sequence>
<xs:element minOccurs="0" name="confidentiality" type="ct:N64"/>
<xs:element minOccurs="0" name="justification" type="i6:textField"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="legislation">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="value" type="ct:N78"/>
<xs:element minOccurs="0" name="other" type="i6:textFieldSmall"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="NameType">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:basePicklistField">
<xs:sequence>
<xs:element minOccurs="0" name="value" type="ct:N97"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="other" type="i6:multilingualTextFieldSmall"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="Name" type="i6:textFieldMultiLine"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="Country">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:basePicklistField">
<xs:sequence>
<xs:element minOccurs="0" name="value" type="ct:A31"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="other" type="i6:multilingualTextFieldSmall"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="Relation">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:basePicklistField">
<xs:sequence>
<xs:element minOccurs="0" name="value" type="ct:PG6_60200"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="other" type="i6:multilingualTextFieldSmall"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element maxOccurs="unbounded" minOccurs="0" name="Remarks" type="i6:multilingualTextFieldLarge"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="OwnerLegalEntityProtection">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:baseDataProtectionField">
<xs:sequence>
<xs:element minOccurs="0" name="confidentiality" type="ct:N64"/>
<xs:element minOccurs="0" name="justification" type="i6:textField"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="legislation">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="value" type="ct:N78"/>
<xs:element minOccurs="0" name="other" type="i6:textFieldSmall"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="OwnerLegalEntity" type="i6:documentReferenceField"/>
<xs:element minOccurs="0" name="ThirdPartyProtection">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:baseDataProtectionField">
<xs:sequence>
<xs:element minOccurs="0" name="confidentiality" type="ct:N64"/>
<xs:element minOccurs="0" name="justification" type="i6:textField"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="legislation">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="value" type="ct:N78"/>
<xs:element minOccurs="0" name="other" type="i6:textFieldSmall"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="ThirdParty" type="i6:documentReferenceField"/>
<xs:element minOccurs="0" name="ContactPersons">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="entry">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:repeatableEntryType">
<xs:sequence>
<xs:element minOccurs="0" name="DataProtection">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:baseDataProtectionField">
<xs:sequence>
<xs:element minOccurs="0" name="confidentiality" type="ct:N64"/>
<xs:element minOccurs="0" name="justification" type="i6:textField"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="legislation">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="value" type="ct:N78"/>
<xs:element minOccurs="0" name="other" type="i6:textFieldSmall"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="ContactPerson" type="i6:documentReferenceField"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="ReferenceSubstance">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Protection">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:baseDataProtectionField">
<xs:sequence>
<xs:element minOccurs="0" name="confidentiality" type="ct:N64"/>
<xs:element minOccurs="0" name="justification" type="i6:textField"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="legislation">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="value" type="ct:N78"/>
<xs:element minOccurs="0" name="other" type="i6:textFieldSmall"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="ReferenceSubstance" type="i6:documentReferenceField"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="TypeOfSubstance">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Composition">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:basePicklistField">
<xs:sequence>
<xs:element minOccurs="0" name="value" type="ct:N08"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="other" type="i6:multilingualTextFieldSmall"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="Origin">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:basePicklistField">
<xs:sequence>
<xs:element minOccurs="0" name="value" type="ct:N58"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="other" type="i6:multilingualTextFieldSmall"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="RoleInSupplyChain">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="RoleProtection">
<xs:complexType>
<xs:complexContent>
<xs:extension base="i6:baseDataProtectionField">
<xs:sequence>
<xs:element minOccurs="0" name="confidentiality" type="ct:N64"/>
<xs:element minOccurs="0" name="justification" type="i6:textField"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="legislation">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="value" type="ct:N78"/>
<xs:element minOccurs="0" name="other" type="i6:textFieldSmall"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="Manufacturer" nillable="true" type="i6:booleanField"/>
<xs:element minOccurs="0" name="Importer" nillable="true" type="i6:booleanField"/>
<xs:element minOccurs="0" name="OnlyRepresentative" nillable="true" type="i6:booleanField"/>
<xs:element minOccurs="0" name="DownstreamUser" nillable="true" type="i6:booleanField"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://iuclid6.echa.europa.eu/namespaces/platform-attachment/v1"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink"
targetNamespace="http://iuclid6.echa.europa.eu/namespaces/platform-attachment/v1"
elementFormDefault="qualified" attributeFormDefault="qualified">
<xs:annotation>
<xs:appinfo>XML Schema Definition of the IUCLID6 Attachment entity</xs:appinfo>
</xs:annotation>
<xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>
<xs:element name="Attachment">
<xs:annotation>
<xs:documentation>Defines the attachment metadata information</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:all>
<xs:element name="documentKey" type="xs:string">
<xs:annotation>
<xs:documentation>The unique identifier of the attachment</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="name" type="xs:string">
<xs:annotation>
<xs:documentation>The name of the uploaded attachment</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="creationDate" type="xs:dateTime">
<xs:annotation>
<xs:documentation>The date that the attachment was created</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="lastModificationDate" type="xs:dateTime">
<xs:annotation>
<xs:documentation>The last modification date of the attachment</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="remarks" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>The remarks provided by the user during the attachment uploading</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="md5" type="xs:string">
<xs:annotation>
<xs:documentation>The MD5 hash of the uploaded attachment content</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="mimetype" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>The media type of the attachment content</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element type="xs:boolean" name="symbolic" minOccurs="0">
<xs:annotation>
<xs:documentation>Indicates that the actual attachment file is not included in the i6z file</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="content" minOccurs="0">
<xs:annotation>
<xs:documentation>The name/location of the attachment binary under the "attachments" directory inside the i6z archive file</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute ref="xlink:type"/>
<xs:attribute ref="xlink:href"/>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="AttachmentRef" type="xs:string">
<xs:annotation>
<xs:documentation>Specifies the unique identifier of an attachment that is directly linked to a IUCLID6 document</xs:documentation>
</xs:annotation>
</xs:element>
</xs:schema>

View File

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://iuclid6.echa.europa.eu/namespaces/platform-container/v2"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:pm="http://iuclid6.echa.europa.eu/namespaces/platform-metadata/v1"
xmlns:att="http://iuclid6.echa.europa.eu/namespaces/platform-attachment/v1"
xmlns:mh="http://iuclid6.echa.europa.eu/namespaces/platform-modification-history/v1"
targetNamespace="http://iuclid6.echa.europa.eu/namespaces/platform-container/v2"
elementFormDefault="qualified" attributeFormDefault="qualified">
<xs:import namespace="http://iuclid6.echa.europa.eu/namespaces/platform-metadata/v1" schemaLocation="platform-metadata.xsd"/>
<xs:import namespace="http://iuclid6.echa.europa.eu/namespaces/platform-attachment/v1" schemaLocation="platform-attachment.xsd"/>
<xs:import namespace="http://iuclid6.echa.europa.eu/namespaces/platform-modification-history/v1" schemaLocation="platform-modification-history.xsd"/>
<xs:annotation>
<xs:appinfo>XML Schema Definition of the IUCLID6 Document entity</xs:appinfo>
</xs:annotation>
<xs:element name="Document">
<xs:annotation>
<xs:documentation>Contains top-level information concerning the IUCLID6 document along with the document's actual chemical information content</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="PlatformMetadata">
<xs:annotation>
<xs:documentation>Contains the top-level information of a IUCLID6 document such as document identifier, name, type and subtype, etc.
<br/><br/>
The elements are included in the platform-metadata.xsd</xs:documentation>
</xs:annotation>
<xs:complexType >
<xs:all minOccurs="0">
<xs:element ref="pm:iuclidVersion" minOccurs="0" />
<xs:element ref="pm:documentKey" minOccurs="0" />
<xs:element ref="pm:documentType" />
<xs:element ref="pm:definitionVersion" minOccurs="0" />
<xs:element ref="pm:creationDate" />
<xs:element ref="pm:lastModificationDate" />
<xs:element ref="pm:name" minOccurs="0" />
<xs:element ref="pm:documentSubType" minOccurs="0" />
<xs:element ref="pm:parentDocumentKey" minOccurs="0" />
<xs:element ref="pm:orderInSectionNo" minOccurs="0" />
<xs:element ref="pm:submissionType" minOccurs="0" />
<xs:element ref="pm:submissionTypeVersion" minOccurs="0" />
<xs:element ref="pm:submittingLegalEntity" minOccurs="0" />
<xs:element ref="pm:dossierSubject" minOccurs="0" />
<xs:element ref="pm:i5Origin" minOccurs="0" />
<xs:element ref="pm:creationTool" minOccurs="0" />
<xs:element ref="pm:snapshotCreationTool" minOccurs="0" />
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="Content">
<xs:annotation>
<xs:documentation>Contains the chemical information of the specific IUCLID6 document.
<br/><br/>
The content is dynamic and is defined in the corresponding .xsd per document definition identifier.
in the form of "document_type"-"document_subtype"-"version".xsd.
Example: ENDPOINT_STUDY_RECORD-Density-4.0.xsd</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:any namespace="##other" processContents="strict" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Attachments" nillable="true">
<xs:annotation>
<xs:documentation>Lists the attachments that are directly linked to the document. The content of this section is an unbounded list of references to attachment identifiers that this document is linked to.
<br/><br/>
The elements are included in the platform-attachment.xsd</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded" >
<xs:element ref="att:Attachment" minOccurs="0" />
<xs:element ref="att:AttachmentRef" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ModificationHistory" nillable="true">
<xs:annotation>
<xs:documentation>Lists the entries of the document's modification history. Every entry is a single operation that took place on the specific document and specifies the date of the action, the user that run the action, the submitting legal entity of the user and the modification remarks if any.
<br/><br/>
The elements are included in the platform-modification-history.xsd</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:element ref="mh:Modification" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -0,0 +1,611 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://iuclid6.echa.europa.eu/namespaces/platform-fields/v1"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://iuclid6.echa.europa.eu/namespaces/platform-fields/v1"
elementFormDefault="qualified" attributeFormDefault="qualified">
<xs:annotation>
<xs:appinfo>XML Schema Definition of the main IUCLID6 data types</xs:appinfo>
</xs:annotation>
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
<xs:complexType name="sectionTypesField">
<xs:annotation>
<xs:documentation>Specifies the content of the section types field under Category document</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="documentDefinitionIdentifier" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="documentType" type="xs:string"/>
<xs:element name="documentSubType" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="inventoryEntry">
<xs:annotation>
<xs:documentation>Specifies the content of the chemical inventory field</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="inventoryCode" type="xs:string"/>
<xs:element name="numberInInventory" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="addressField">
<xs:annotation>
<xs:documentation>Contains the elements constituting the AddressField type</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="picklistField"/>
<xs:element name="email" type="xs:string"/>
<xs:element name="fax" type="xs:string"/>
<xs:element name="phone" type="xs:string"/>
<xs:element name="state" type="xs:string"/>
<xs:element name="street1" type="xs:string"/>
<xs:element name="street2" type="xs:string"/>
<xs:element name="website" type="xs:string"/>
<xs:element name="zipcode" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="attachmentField">
<xs:annotation>
<xs:documentation>Holds the key of the attachment content attached to the specific field</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:complexType name="attachmentListField">
<xs:annotation>
<xs:documentation>Holds the list of the attachment content identifiers/keys attached to the specific field</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="key" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="booleanField">
<xs:annotation>
<xs:documentation>The value of IUCLID6 boolean fields</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:boolean"/>
</xs:simpleType>
<xs:complexType name="legislation">
<xs:annotation>
<xs:documentation>Elements that constitute the regulatory programme legislation information of a data protection field</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="value" type="xs:string"/>
<xs:element name="other" minOccurs="0" maxOccurs="1" type="textFieldSmall"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="multilingualLegislation">
<xs:annotation>
<xs:documentation>The multilingual version of the legislation type</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="value" type="xs:string"/>
<xs:element name="other" minOccurs="0" maxOccurs="unbounded"
type="multilingualTextFieldSmall"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="dataProtectionField">
<xs:annotation>
<xs:documentation>The elements constituting the data protection field type</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="confidentiality" type="xs:string"/>
<xs:element name="justification" type="textField"/>
<xs:element name="legislation" minOccurs="0" maxOccurs="unbounded" type="legislation"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="multilingualDataProtectionField">
<xs:annotation>
<xs:documentation>The multilingual version of the data protection field type</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="confidentiality" type="xs:string"/>
<xs:element name="justification" maxOccurs="unbounded" type="multilingualTextField"/>
<xs:element name="legislation" minOccurs="0" maxOccurs="unbounded"
type="multilingualLegislation"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="dateField">
<xs:annotation>
<xs:documentation>The value of IUCLID6 date/timestamp fields</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:dateTime"/>
</xs:simpleType>
<xs:simpleType name="documentReferenceField">
<xs:annotation>
<xs:documentation>Holds the key of the IUCLID6 document that is referenced by the specific field</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:complexType name="documentReferenceMultipleField">
<xs:annotation>
<xs:documentation>Multilingual version of the document reference field</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="key" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="numericField">
<xs:annotation>
<xs:documentation>The value of IUCLID6 numeric fields</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:decimal"/>
</xs:simpleType>
<xs:complexType name="physicalQuantityField">
<xs:annotation>
<xs:documentation>Specifies the elements constituting the IUCLID6 physical quantity fields</xs:documentation>
</xs:annotation>
<xs:sequence/>
</xs:complexType>
<xs:simpleType name="lowerQualifier">
<xs:annotation>
<xs:documentation>Restricts the eligible values of the "lowerQualifier" element</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="&gt;"/>
<xs:enumeration value="&gt;="/>
<xs:enumeration value="ca."/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="upperQualifier">
<xs:annotation>
<xs:documentation>Restricts the eligible values of the "upperQualifier" element</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="&lt;"/>
<xs:enumeration value="&lt;="/>
<xs:enumeration value="ca."/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="halfBoundedQualifier">
<xs:annotation>
<xs:documentation>Restricts the eligible values of the "halfBoundedQualifier" element</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="&gt;"/>
<xs:enumeration value="&gt;="/>
<xs:enumeration value="&lt;"/>
<xs:enumeration value="&lt;="/>
<xs:enumeration value="ca."/>
</xs:restriction>
</xs:simpleType>
<xs:group name="rangeQualifierDecimalGroup">
<xs:annotation>
<xs:documentation>Groups the qualifiers along with the decimal values of the physical quantity range field</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="lowerQualifier" minOccurs="0" type="lowerQualifier"/>
<xs:element name="upperQualifier" minOccurs="0" type="upperQualifier"/>
<xs:element name="lowerValue" type="xs:decimal" minOccurs="0"/>
<xs:element name="upperValue" type="xs:decimal" minOccurs="0"/>
</xs:sequence>
</xs:group>
<xs:group name="rangeQualifierIntegerGroup">
<xs:annotation>
<xs:documentation>Groups the qualifiers along with the integer values of the physical quantity range field</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="lowerQualifier" minOccurs="0" type="lowerQualifier"/>
<xs:element name="upperQualifier" minOccurs="0" type="upperQualifier"/>
<xs:element name="lowerValue" type="xs:integer" minOccurs="0"/>
<xs:element name="upperValue" type="xs:integer" minOccurs="0"/>
</xs:sequence>
</xs:group>
<xs:group name="halfBoundedRangeQualifierDecimalGroup">
<xs:annotation>
<xs:documentation>Groups the qualifier along with the decimal value of the half bounded physical quantity range field</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="qualifier" minOccurs="0" type="halfBoundedQualifier"/>
<xs:element name="value" type="xs:decimal" minOccurs="0"/>
</xs:sequence>
</xs:group>
<xs:group name="halfBoundedRangeQualifierIntegerGroup">
<xs:annotation>
<xs:documentation>Groups the qualifier along with the integer value of the half bounded physical quantity range field</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="qualifier" minOccurs="0" type="halfBoundedQualifier"/>
<xs:element name="value" type="xs:integer" minOccurs="0"/>
</xs:sequence>
</xs:group>
<xs:complexType name="physicalQuantityRangeField">
<xs:annotation>
<xs:documentation>Lists the elements constituting the decimal physical quantity range field</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="unitCode" minOccurs="0" type="textFieldSmall"/>
<xs:element name="unitOther" minOccurs="0" type="textFieldSmall"/>
<xs:group ref="rangeQualifierDecimalGroup"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="multilingualPhysicalQuantityRangeField">
<xs:annotation>
<xs:documentation>The multilingual version of the physical quantity range field</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="unitCode" minOccurs="0" type="textFieldSmall"/>
<xs:element name="unitOther" minOccurs="0" maxOccurs="unbounded"
type="multilingualTextFieldSmall"/>
<xs:group ref="rangeQualifierDecimalGroup"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="physicalQuantityIntegerRangeField">
<xs:annotation>
<xs:documentation>Lists the elements constituting the integer physical quantity range field</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="unitCode" minOccurs="0" type="textFieldSmall"/>
<xs:element name="unitOther" minOccurs="0" type="textFieldSmall"/>
<xs:group ref="rangeQualifierIntegerGroup"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="multilingualPhysicalQuantityIntegerRangeField">
<xs:annotation>
<xs:documentation>The multilingual version of the physical quantity range field with integer value</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="unitCode" minOccurs="0" type="textFieldSmall"/>
<xs:element name="unitOther" minOccurs="0" maxOccurs="unbounded"
type="multilingualTextFieldSmall"/>
<xs:group ref="rangeQualifierIntegerGroup"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="physicalQuantityHalfBoundedField">
<xs:annotation>
<xs:documentation>Lists the elements constituting the decimal, hald-bounded physical quantity range field</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="unitCode" minOccurs="0" type="textFieldSmall"/>
<xs:element name="unitOther" minOccurs="0" type="textFieldSmall"/>
<xs:group ref="halfBoundedRangeQualifierDecimalGroup"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="multilingualPhysicalQuantityHalfBoundedField">
<xs:annotation>
<xs:documentation>The multilingual version of the half bounded physical quantity range field</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="unitCode" minOccurs="0" type="textFieldSmall"/>
<xs:element name="unitOther" minOccurs="0" maxOccurs="unbounded"
type="multilingualTextFieldSmall"/>
<xs:group ref="halfBoundedRangeQualifierDecimalGroup"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="physicalQuantityIntegerHalfBoundedField">
<xs:annotation>
<xs:documentation>Lists the elements constituting the integer, half bounded physical quantity range field</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="unitCode" minOccurs="0" type="textFieldSmall"/>
<xs:element name="unitOther" minOccurs="0" type="textFieldSmall"/>
<xs:group ref="halfBoundedRangeQualifierIntegerGroup"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="multilingualPhysicalQuantityIntegerHalfBoundedField">
<xs:annotation>
<xs:documentation>The multilingual version of the half bounded physical quantity range field with integer value</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="unitCode" minOccurs="0" type="textFieldSmall"/>
<xs:element name="unitOther" minOccurs="0" maxOccurs="unbounded"
type="multilingualTextFieldSmall"/>
<xs:group ref="halfBoundedRangeQualifierIntegerGroup"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="textField">
<xs:annotation>
<xs:documentation>Indicates that a field holds textual content</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:complexType name="multilingualTextField">
<xs:annotation>
<xs:documentation>Indicates that a field holds multilingual textual content</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="textField">
<xs:attribute ref="xml:lang" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="textFieldSmall">
<xs:annotation>
<xs:documentation>Indicates that a field holds textual content with a maximum of 255 characters</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="255"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="multilingualTextFieldSmall">
<xs:annotation>
<xs:documentation>Indicates that a field holds multilingual textual content with a maximum of 255 characters</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="textFieldSmall">
<xs:attribute ref="xml:lang" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="textFieldLarge">
<xs:annotation>
<xs:documentation>Indicates that a field holds textual content with a maximum of 32768 characters</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="32768"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="multilingualTextFieldLarge">
<xs:annotation>
<xs:documentation>Indicates that a field holds multilingual textual content with a maximum of 32768 characters</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="textFieldLarge">
<xs:attribute ref="xml:lang" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="textFieldMultiLine">
<xs:annotation>
<xs:documentation>Indicates that a field holds textual content with a maximum of 2000 characters</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="2000"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="multilingualTextFieldMultiLine">
<xs:annotation>
<xs:documentation>Indicates that a field holds multilingual textual content with a maximum of 2000 characters</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="textFieldMultiLine">
<xs:attribute ref="xml:lang" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="picklistField">
<xs:annotation>
<xs:documentation>Lists the elements (phrase code and other text) constituting the IUCLID6 picklist field</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="value" minOccurs="0" type="textFieldSmall"/>
<xs:element name="other" minOccurs="0" type="textFieldSmall"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="multilingualPicklistField">
<xs:annotation>
<xs:documentation>The multilingual version of the picklist field</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="value" minOccurs="0" type="textFieldSmall"/>
<xs:element name="other" minOccurs="0" maxOccurs="unbounded"
type="multilingualTextFieldSmall"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="picklistFieldWithSmallTextRemarks">
<xs:annotation>
<xs:documentation>Lists the elements (phrase code, other text and remarks) constituting the IUCLID6 picklist field - remarks information can be up to 255 characters</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="value" minOccurs="0" type="textFieldSmall"/>
<xs:element name="other" minOccurs="0" type="textFieldSmall"/>
<xs:element name="remarks" minOccurs="0" type="textFieldSmall"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="multilingualPicklistFieldWithSmallTextRemarks">
<xs:annotation>
<xs:documentation>The multilingual version of the picklist field including remarks information up to 255 characters</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="value" minOccurs="0" type="textFieldSmall"/>
<xs:element name="other" minOccurs="0" maxOccurs="unbounded"
type="multilingualTextFieldSmall"/>
<xs:element name="remarks" minOccurs="0" maxOccurs="unbounded"
type="multilingualTextFieldSmall"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="picklistFieldWithLargeTextRemarks">
<xs:annotation>
<xs:documentation>Lists the elements (phrase code, other text and remarks) constituting the IUCLID6 picklist field - remarks information can be up to 32768 characters</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="value" minOccurs="0" type="textFieldSmall"/>
<xs:element name="other" minOccurs="0" type="textFieldSmall"/>
<xs:element name="remarks" minOccurs="0" type="textFieldLarge"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="multilingualPicklistFieldWithLargeTextRemarks">
<xs:annotation>
<xs:documentation>The multilingual version of the picklist field including remarks information up to 32768 characters</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="value" minOccurs="0" type="textFieldSmall"/>
<xs:element name="other" minOccurs="0" maxOccurs="unbounded"
type="multilingualTextFieldSmall"/>
<xs:element name="remarks" minOccurs="0" maxOccurs="unbounded"
type="multilingualTextFieldLarge"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="picklistFieldWithMultiLineTextRemarks">
<xs:annotation>
<xs:documentation>Lists the elements (phrase code, other text and remarks) constituting the IUCLID6 picklist field - remarks information can be up to 2000 characters</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="value" minOccurs="0" type="textFieldSmall"/>
<xs:element name="other" minOccurs="0" type="textFieldSmall"/>
<xs:element name="remarks" minOccurs="0" type="textFieldMultiLine"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="multilingualPicklistFieldWithMultiLineTextRemarks">
<xs:annotation>
<xs:documentation>The multilingual version of the picklist field including remarks information up to 2000 characters</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="value" minOccurs="0" type="textFieldSmall"/>
<xs:element name="other" minOccurs="0" maxOccurs="unbounded"
type="multilingualTextFieldSmall"/>
<xs:element name="remarks" minOccurs="0" maxOccurs="unbounded"
type="multilingualTextFieldMultiLine"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="repeatableEntryType">
<xs:annotation>
<xs:documentation>Specifies the multiplicity and attribute of a repeatable block</xs:documentation>
</xs:annotation>
<xs:sequence/>
<xs:attribute name="uuid" type="uuidAttribute" use="required"/>
</xs:complexType>
<xs:simpleType name="uuidAttribute">
<xs:annotation>
<xs:documentation>Attribute used to hold unique identifier information</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:complexType name="basePicklistField">
<xs:annotation>
<xs:documentation>An empty complex type that is extended by the picklist fields which are defined inline in the auto-generated document xsds.
<br/><br/>
The picklist fields contain the following elements:
<ul>
<li>value</li>
<li>other</li>
<li>remarks</li>
</ul>
<br/><br/>
The inline definition of the fields take place in order to:
<ul>
<li>restrict the eligible phrase codes per picklist field</li>
<li>conditionally define or omit the "other" element based on the configured phrasegroup (open, close)</li>
<li>based on the picklist definition, properly define the multilingual behavior of the textual elements "other" and "remarks" elements </li>
<li>based on the picklist definition, properly define the length restriction of the "remarks" elements </li>
</ul></xs:documentation>
</xs:annotation>
<xs:sequence/>
</xs:complexType>
<xs:complexType name="basePhysicalQuantityField">
<xs:annotation>
<xs:documentation>An empty complex type that is extended by the physical quantity fields which are defined inline in the auto-generated document xsds.
<br/><br/>
The physical quantity fields contain the following elements:
<ul>
<li>unitCode</li>
<li>unitOther</li>
<li>value</li>
</ul>
<br/><br/>
The inline definition of the fields take place in order to:
<ul>
<li>restrict the eligible phrase codes for the "unitCode" element</li>
<li>conditionally define or omit the "unitOther" element based on the configured phrasegroup (open, close)</li>
<li>based on the field definition, properly define the multilingual behavior of the textual "unitOther" element</li>
</ul></xs:documentation>
</xs:annotation>
<xs:sequence/>
</xs:complexType>
<xs:complexType name="basePhysicalQuantityRangeField">
<xs:annotation>
<xs:documentation>An empty complex type that is extended by the physical quantity range fields which are defined inline in the auto-generated document xsds.
<br/><br/>
The physical quantity range fields contain the following elements:
<ul>
<li>unitCode</li>
<li>unitOther</li>
<li>lowerQualifier</li>
<li>upperQualifier</li>
<li>lowerValue</li>
<li>upperValue</li>
<li>qualifier: in case of half-bounded</li>
<li>value: in case of half-bounded</li>
</ul>
<br/><br/>
The inline definition of the fields take place in order to:
<ul>
<li>restrict the eligible phrase codes for the "unitCode" element</li>
<li>conditionally define or omit the "unitOther" element based on the configured phrasegroup (open, close)</li>
<li>based on the field definition, properly define the multilingual behavior of the textual "unitOther" element</li>
<li>based on the field definition, dynamically setup the bounded- or half-boudnded-related elements</li>
</ul></xs:documentation>
</xs:annotation>
<xs:sequence/>
</xs:complexType>
<xs:complexType name="baseDataProtectionField">
<xs:annotation>
<xs:documentation>An empty complex type that is extended by the data protection fields which are defined inline in the auto-generated document xsds.
<br/><br/>
The data protection fields contain the following elements:
<ul>
<li>confidentiality</li>
<li>justification</li>
<li>legislation</li>
<ul>
<li>value</li>
<li>other</li>
</ul>
</ul>
<br/><br/>
The inline definition of the fields take place in order to:
<ul>
<li>restrict the eligible phrase codes for the "confidentiality" and "value" element</li>
<li>based on the field definition, properly define the multilingual behavior of the textual "justification" and "other" elements</li>
</ul> </xs:documentation>
</xs:annotation>
<xs:sequence/>
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,138 @@
<xs:schema xmlns="http://iuclid6.echa.europa.eu/namespaces/platform-metadata/v1"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://iuclid6.echa.europa.eu/namespaces/platform-metadata/v1"
elementFormDefault="qualified" attributeFormDefault="qualified">
<xs:annotation>
<xs:appinfo>XML Schema Definition of the "PlatformMetadata" section</xs:appinfo>
</xs:annotation>
<xs:element name="iuclidVersion" type="xs:string">
<xs:annotation>
<xs:documentation>The current iuclid version used for exporting the .i6z archive</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="documentKey" type="xs:string">
<xs:annotation>
<xs:documentation>The unique identifier of the document</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="documentType" type="xs:string">
<xs:annotation>
<xs:documentation>The type of the document. Eligible values are:
<ul>
<li>ANNOTATION</li>
<li>ARTICLE</li>
<li>CATEGORY</li>
<li>DOSSIER</li>
<li>FIXED_RECORD</li>
<li>FLEXIBLE_RECORD</li>
<li>ENDPOINT_STUDY_RECORD</li>
<li>FLEXIBLE_SUMMARY</li>
<li>ENDPOINT_SUMMARY</li>
<li>ASSESSMENT_ENTITY</li>
<li>LEGAL_ENTITY</li>
<li>MIXTURE</li>
<li>REFERENCE_SUBSTANCE</li>
<li>SITE</li>
<li>CONTACT</li>
<li>LITERATURE</li>
<li>SUBSTANCE</li>
<li>TEMPLATE</li>
<li>TEST_MATERIAL_INFORMATION</li>
<li>INVENTORY</li>
<li>CUSTOM_ENTITY</li>
<li>CUSTOM_SECTION</li>
</ul></xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="definitionVersion" type="xs:string">
<xs:annotation>
<xs:documentation>The definition version of the exported document. This value is used:
<ul>
<li>indicates that the content section follows the document format of the specified version</li>
<li>during import operation, this value drives the resolution of the proper document's .xsd to run the validation with</li>
</ul></xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="creationDate" type="xs:dateTime">
<xs:annotation>
<xs:documentation>The date that the document was created</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="lastModificationDate" type="xs:dateTime">
<xs:annotation>
<xs:documentation>The last modification date of the document</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="name" type="xs:string">
<xs:annotation>
<xs:documentation>It is the name of the document as specified by the user.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="documentSubType" type="xs:string">
<xs:annotation>
<xs:documentation>The subtype in case of section document. This information is not applicable to entity documents. "type"."subtype" uniquely identify the section document type and represent the document definition identifier</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="parentDocumentKey" type="xs:string">
<xs:annotation>
<xs:documentation>In case this document is a section document, this element keeps the unique identifier of its parent document</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="orderInSectionNo">
<xs:annotation>
<xs:documentation>In case this is a section document, the order of the document with the specific definition identifier (type, subtype) under the provided parent entity</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="xs:nonNegativeInteger"/>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:element>
<xs:element name="submissionType" type="xs:string">
<xs:annotation>
<xs:documentation>Applicable only to dossier archives. Indicates the submission type used during dossier generation. The value is specified in case the XML concerns:
<ul>
<li>the dossier document</li>
<li>the composite documents (SUBSTANCE/MIXTURE) under the dossier with a submission type different than the one of the dossier document</li>
</ul></xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="submissionTypeVersion" type="xs:string">
<xs:annotation>
<xs:documentation>The version of the submission type used to generate the dossier for</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="submittingLegalEntity" type="xs:string">
<xs:annotation>
<xs:documentation>The legal entity document identifier that originated toe dossier creation</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="dossierSubject" type="xs:string">
<xs:annotation>
<xs:documentation>In case this is the dossier document, it contains the document key (unique identifier)
of the dossier subject document (SUBSTANCE, MIXTURE, CATEGORY, ARTICLE) which is the document the dossier was created from</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="i5Origin" type="xs:boolean">
<xs:annotation>
<xs:documentation>Flag indicating whether this document originated from a IUCLID5 instance and migrated to the current IUCLID6 format or not</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="creationTool" type="xs:string">
<xs:annotation>
<xs:documentation>Element that specifies the application this document was first created with. Default value "IUC6" should be provided for IUCLID6-documents</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="snapshotCreationTool" type="xs:string">
<xs:annotation>
<xs:documentation>In case of dossier archive, element that specifies the application this dossier was created from. Upon dossier creation this is filled in with "IUC6"</xs:documentation>
</xs:annotation>
</xs:element>
</xs:schema>

View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://iuclid6.echa.europa.eu/namespaces/platform-modification-history/v1"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://iuclid6.echa.europa.eu/namespaces/platform-modification-history/v1"
elementFormDefault="qualified" attributeFormDefault="qualified">
<xs:annotation>
<xs:appinfo>XML Schema Definition of the "ModificationHistory" section</xs:appinfo>
<xs:documentation>This section lists the entries of the document's modification history. Every entry is a single operation that took place on the specific document and specifies the date of the action, the user that run the action, the submitting legal entity of the user and the modification remarks if any</xs:documentation>
</xs:annotation>
<xs:element name="Modification">
<xs:annotation>
<xs:documentation>Holds the information concerning the document's modification. Every entry is a single operation that took place on the specific document and specifies the date of the action, the user that run the action, the submitting legal entity of the user and the modification remarks if any</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:all>
<xs:element name="Date" type="xs:dateTime">
<xs:annotation>
<xs:documentation>The date the action was performed on the document</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Author" type="xs:string">
<xs:annotation>
<xs:documentation>The userName of the user that performed the modification</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="LegalEntity" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>The description of the submitting legal entity of the user. This information contains the concatenated value of the LE name, city and localized country information</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Remarks" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>The modification comment</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -0,0 +1,231 @@
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xlink="http://www.w3.org/1999/xlink" targetNamespace="http://www.w3.org/1999/xlink">
<xs:annotation>
<xs:documentation>
This schema document provides attribute declarations and attribute
group, complex type and simple type definitions which can be used in
the construction of user schemas to define the structure of
particular linking constructs, e.g.
<![CDATA[
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xl="http://www.w3.org/1999/xlink">
<xs:import namespace="http://www.w3.org/1999/xlink"
location="http://www.w3.org/1999/xlink.xsd">
<xs:element name="mySimple">
<xs:complexType>
...
<xs:attributeGroup ref="xl:simpleAttrs"/>
...
</xs:complexType>
</xs:element>
...
</xs:schema>
]]>
</xs:documentation>
</xs:annotation>
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="xml.xsd" />
<xs:attribute name="type" type="xlink:typeType" />
<xs:simpleType name="typeType">
<xs:restriction base="xs:token">
<xs:enumeration value="simple" />
<xs:enumeration value="extended" />
<xs:enumeration value="title" />
<xs:enumeration value="resource" />
<xs:enumeration value="locator" />
<xs:enumeration value="arc" />
</xs:restriction>
</xs:simpleType>
<xs:attribute name="href" type="xlink:hrefType" />
<xs:simpleType name="hrefType">
<xs:restriction base="xs:anyURI" />
</xs:simpleType>
<xs:attribute name="role" type="xlink:roleType" />
<xs:simpleType name="roleType">
<xs:restriction base="xs:anyURI">
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
<xs:attribute name="arcrole" type="xlink:arcroleType" />
<xs:simpleType name="arcroleType">
<xs:restriction base="xs:anyURI">
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
<xs:attribute name="title" type="xlink:titleAttrType" />
<xs:simpleType name="titleAttrType">
<xs:restriction base="xs:string" />
</xs:simpleType>
<xs:attribute name="show" type="xlink:showType" />
<xs:simpleType name="showType">
<xs:restriction base="xs:token">
<xs:enumeration value="new" />
<xs:enumeration value="replace" />
<xs:enumeration value="embed" />
<xs:enumeration value="other" />
<xs:enumeration value="none" />
</xs:restriction>
</xs:simpleType>
<xs:attribute name="actuate" type="xlink:actuateType" />
<xs:simpleType name="actuateType">
<xs:restriction base="xs:token">
<xs:enumeration value="onLoad" />
<xs:enumeration value="onRequest" />
<xs:enumeration value="other" />
<xs:enumeration value="none" />
</xs:restriction>
</xs:simpleType>
<xs:attribute name="label" type="xlink:labelType" />
<xs:simpleType name="labelType">
<xs:restriction base="xs:NCName" />
</xs:simpleType>
<xs:attribute name="from" type="xlink:fromType" />
<xs:simpleType name="fromType">
<xs:restriction base="xs:NCName" />
</xs:simpleType>
<xs:attribute name="to" type="xlink:toType" />
<xs:simpleType name="toType">
<xs:restriction base="xs:NCName" />
</xs:simpleType>
<xs:attributeGroup name="simpleAttrs">
<xs:attribute ref="xlink:type" fixed="simple" />
<xs:attribute ref="xlink:href" />
<xs:attribute ref="xlink:role" />
<xs:attribute ref="xlink:arcrole" />
<xs:attribute ref="xlink:title" />
<xs:attribute ref="xlink:show" />
<xs:attribute ref="xlink:actuate" />
</xs:attributeGroup>
<xs:group name="simpleModel">
<xs:sequence>
<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:group>
<xs:complexType mixed="true" name="simple">
<xs:annotation>
<xs:documentation>
Intended for use as the type of user-declared elements to make them simple
links.
</xs:documentation>
</xs:annotation>
<xs:group ref="xlink:simpleModel" />
<xs:attributeGroup ref="xlink:simpleAttrs" />
</xs:complexType>
<xs:attributeGroup name="extendedAttrs">
<xs:attribute ref="xlink:type" fixed="extended" use="required" />
<xs:attribute ref="xlink:role" />
<xs:attribute ref="xlink:title" />
</xs:attributeGroup>
<xs:group name="extendedModel">
<xs:choice>
<xs:element ref="xlink:title" />
<xs:element ref="xlink:resource" />
<xs:element ref="xlink:locator" />
<xs:element ref="xlink:arc" />
</xs:choice>
</xs:group>
<xs:complexType name="extended">
<xs:annotation>
<xs:documentation>
Intended for use as the type of user-declared elements to make them extended
links. Note that the elements referenced in the content model are
all abstract. The intention is that by simply declaring elements
with these as their substitutionGroup, all the right things will
happen.
</xs:documentation>
</xs:annotation>
<xs:group ref="xlink:extendedModel" minOccurs="0" maxOccurs="unbounded" />
<xs:attributeGroup ref="xlink:extendedAttrs" />
</xs:complexType>
<xs:element name="title" type="xlink:titleEltType" abstract="true" />
<xs:attributeGroup name="titleAttrs">
<xs:attribute ref="xlink:type" fixed="title" use="required" />
<xs:attribute ref="xml:lang">
<xs:annotation>
<xs:documentation>
xml:lang is not required, but provides much of the motivation for title
elements in addition to attributes, and so is provided here for
convenience.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<xs:group name="titleModel">
<xs:sequence>
<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:group>
<xs:complexType mixed="true" name="titleEltType">
<xs:group ref="xlink:titleModel" />
<xs:attributeGroup ref="xlink:titleAttrs" />
</xs:complexType>
<xs:element name="resource" type="xlink:resourceType"
abstract="true" />
<xs:attributeGroup name="resourceAttrs">
<xs:attribute ref="xlink:type" fixed="resource" use="required" />
<xs:attribute ref="xlink:role" />
<xs:attribute ref="xlink:title" />
<xs:attribute ref="xlink:label" />
</xs:attributeGroup>
<xs:group name="resourceModel">
<xs:sequence>
<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:group>
<xs:complexType mixed="true" name="resourceType">
<xs:group ref="xlink:resourceModel" />
<xs:attributeGroup ref="xlink:resourceAttrs" />
</xs:complexType>
<xs:element name="locator" type="xlink:locatorType"
abstract="true" />
<xs:attributeGroup name="locatorAttrs">
<xs:attribute ref="xlink:type" fixed="locator" use="required" />
<xs:attribute ref="xlink:href" use="required" />
<xs:attribute ref="xlink:role" />
<xs:attribute ref="xlink:title" />
<xs:attribute ref="xlink:label">
<xs:annotation>
<xs:documentation>
label is not required, but locators have no particular XLink function if
they are not labeled.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<xs:group name="locatorModel">
<xs:sequence>
<xs:element ref="xlink:title" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:group>
<xs:complexType name="locatorType">
<xs:group ref="xlink:locatorModel" />
<xs:attributeGroup ref="xlink:locatorAttrs" />
</xs:complexType>
<xs:element name="arc" type="xlink:arcType" abstract="true" />
<xs:attributeGroup name="arcAttrs">
<xs:attribute ref="xlink:type" fixed="arc" use="required" />
<xs:attribute ref="xlink:arcrole" />
<xs:attribute ref="xlink:title" />
<xs:attribute ref="xlink:show" />
<xs:attribute ref="xlink:actuate" />
<xs:attribute ref="xlink:from" />
<xs:attribute ref="xlink:to">
<xs:annotation>
<xs:documentation>
from and to have default behavior when values are missing
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:attributeGroup>
<xs:group name="arcModel">
<xs:sequence>
<xs:element ref="xlink:title" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:group>
<xs:complexType name="arcType">
<xs:group ref="xlink:arcModel" />
<xs:attributeGroup ref="xlink:arcAttrs" />
</xs:complexType>
</xs:schema>

View File

@ -0,0 +1,145 @@
<?xml version='1.0'?>
<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
<xs:annotation>
<xs:documentation>
See http://www.w3.org/XML/1998/namespace.html and
http://www.w3.org/TR/REC-xml for information about this namespace.
This schema document describes the XML namespace, in a form
suitable for import by other schema documents.
Note that local names in this namespace are intended to be defined
only by the World Wide Web Consortium or its subgroups. The
following names are currently defined in this namespace and should
not be used with conflicting semantics by any Working Group,
specification, or document instance:
base (as an attribute name): denotes an attribute whose value
provides a URI to be used as the base for interpreting any
relative URIs in the scope of the element on which it
appears; its value is inherited. This name is reserved
by virtue of its definition in the XML Base specification.
id (as an attribute name): denotes an attribute whose value
should be interpreted as if declared to be of type ID.
This name is reserved by virtue of its definition in the
xml:id specification.
lang (as an attribute name): denotes an attribute whose value
is a language code for the natural language of the content of
any element; its value is inherited. This name is reserved
by virtue of its definition in the XML specification.
space (as an attribute name): denotes an attribute whose
value is a keyword indicating what whitespace processing
discipline is intended for the content of the element; its
value is inherited. This name is reserved by virtue of its
definition in the XML specification.
Father (in any context at all): denotes Jon Bosak, the chair of
the original XML Working Group. This name is reserved by
the following decision of the W3C XML Plenary and
XML Coordination groups:
In appreciation for his vision, leadership and dedication
the W3C XML Plenary on this 10th day of February, 2000
reserves for Jon Bosak in perpetuity the XML name
xml:Father
</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>This schema defines attributes and an attribute group
suitable for use by
schemas wishing to allow xml:base, xml:lang, xml:space or xml:id
attributes on elements they define.
To enable this, such a schema must import this schema
for the XML namespace, e.g. as follows:
&lt;schema . . .>
. . .
&lt;import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd"/>
Subsequently, qualified reference to any of the attributes
or the group defined below will have the desired effect, e.g.
&lt;type . . .>
. . .
&lt;attributeGroup ref="xml:specialAttrs"/>
will define a type which will schema-validate an instance
element with any of those attributes</xs:documentation>
</xs:annotation>
<xs:annotation>
<xs:documentation>In keeping with the XML Schema WG's standard versioning
policy, this schema document will persist at
http://www.w3.org/2007/08/xml.xsd.
At the date of issue it can also be found at
http://www.w3.org/2001/xml.xsd.
The schema document at that URI may however change in the future,
in order to remain compatible with the latest version of XML Schema
itself, or with the XML namespace itself. In other words, if the XML
Schema or XML namespaces change, the version of this document at
http://www.w3.org/2001/xml.xsd will change
accordingly; the version at
http://www.w3.org/2007/08/xml.xsd will not change.
</xs:documentation>
</xs:annotation>
<xs:attribute name="lang">
<xs:annotation>
<xs:documentation>Attempting to install the relevant ISO 2- and 3-letter
codes as the enumerated possible values is probably never
going to be a realistic possibility. See
RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry
at http://www.iana.org/assignments/lang-tag-apps.htm for
further information.
The union allows for the 'un-declaration' of xml:lang with
the empty string.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:union memberTypes="xs:language">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value=""/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="space">
<xs:simpleType>
<xs:restriction base="xs:NCName">
<xs:enumeration value="default"/>
<xs:enumeration value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="base" type="xs:anyURI">
<xs:annotation>
<xs:documentation>See http://www.w3.org/TR/xmlbase/ for
information about this attribute.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="id" type="xs:ID">
<xs:annotation>
<xs:documentation>See http://www.w3.org/TR/xml-id/ for
information about this attribute.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attributeGroup name="specialAttrs">
<xs:attribute ref="xml:base"/>
<xs:attribute ref="xml:lang"/>
<xs:attribute ref="xml:space"/>
<xs:attribute ref="xml:id"/>
</xs:attributeGroup>
</xs:schema>