[xsl] How to get a list of XPath out of XML schema documents - more

Subject: [xsl] How to get a list of XPath out of XML schema documents - more
From: "Michael Lindenau" <michael.lindenau@xxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 28 Feb 2005 19:45:47 +0100 (CET)
Thanx again Robert and Michael,

I've experimented a little bit with the script from Robert, but was not able
to get it to work in the way I intended it. The output is filled with
documentation tag content, the XPath is given from the actual node instead
from the root node and formatting looks pretty ugly (what isn't really an
issue). Probably I'll found way, hanging on and experimenting with this
script. Thanx so far.

Now regarding your points Michael (I didn't expect to talk one day to a
student of David Wheeler - I only know his quote):

>It seems that you do indeed want to work from the schema
>rather than from an instance document.

If it is possible yes - if not I can go the way, creating an instance
document and use this as an input.

>There are several difficulties in doing this.

>Firstly, any global element declaration in the schema is a potential
>top-level element in an instance document. You could get around this by
>supplying the root element name as an input to your generator, which would
>then only produce paths starting at this element.

Supplying the root element would be fine, for what I want to do.

>Secondly, wildcards. Simplest solution would be, if you find an element
>wildcard (xs:any), just output the path with a trailing "//*".

Wildcards are not used and it is not intended to use them (even, as we know,
this can always happen).

>Thirdly, namespaces. If you only want a solution for your own schemas and
>your own schemas don't use namespaces, then you can ignore this problem and
>the it becomes about 90% easier. But of course a general purpose solution
>has to tackle this.

I would prefer to ignore this problem

>Fourthly, include/import/redefine. Again, you can wish this problem away if
>it doesn't affect you.

Actually I can ignore it, as the schema is delivered as one file and I am
the one, that splits this file in different files for maintanence reasons.
But your right, that can get a problem. Anyway, I'd like to do one step
after another. Find a solution for now and afterwards deal with the more
complex themes. Ya ya, I know, that is not reasonable, because the next
approach will make me throw away, all I've done and double my efforts. And
if I had all time of the world, I would start to realize a all-in-one
solution. Unluckily the world is not behaving, like I'd prefer it, so a
simple start would not be so bad ;)

>Your particular schema doesn't even include named model groups or named
>complex types, which makes it very simple. However, sooner or later you're
>going to find your schema using these extra levels of indirection, and as
>your quote from David Wheeler rightly points out, this is going to create
>extra problems.

I've chosen an easy one, but at least we have named complex types, that are
referenced. I snip a more complicated on at the bottom.

>So the question really is, how general purpose do you want your solution to
>be? If you restrict it to simple examples like the one quoted, it's very
>easy, but to handle schemas in general, it's tough.

I restrict it more or less to the simple following example:

<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2005 sp1 U (http://www.xmlspy.com) by any
(Ru-Board) -->
<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by Obbisoft
(OBBISOFT) -->
<!--***************************************************-->
<!-- MESSAGES IN SCHEMA -->
<!-- V2.1.5  beta01-->
<!-- Message IX-->
<!-- Customer / Forwarder Manifest - EDI002-003 MDS 2.8  -->
<!--***************************************************-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
elementFormDefault="qualified">
	<!--***************************************************-->
	<!--** BASIC ELEMENTS AND TYPES-->
	<!--***************************************************-->
	<xs:element name="OBBISOFT" type="OBBISOFTType"/>
	<xs:complexType name="OBBISOFTType">
		<xs:sequence>
			<xs:element name="MESSAGE" type="MESSAGEType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="MSG_CONSIGNEEType">
		<xs:sequence>
			<xs:element name="ORGANIZATION" type="ORGANIZATIONType" minOccurs="0"/>
			<xs:element ref="EXT_SYSTEM" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="MSG_SENDERType">
		<xs:sequence>
			<xs:element name="ORGANIZATION" type="ORGANIZATIONType" minOccurs="0"/>
			<xs:element ref="EXT_SYSTEM" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="MESSAGEType">
		<xs:sequence>
			<xs:element ref="MESSAGE_NO"/>
			<xs:element ref="MESSAGE_VERSION_NO"/>
			<xs:element name="MSG_SENDER" type="MSG_SENDERType"/>
			<xs:element name="MSG_CONSIGNEE" type="MSG_CONSIGNEEType"/>
			<xs:element name="MSG_ERROR" type="MSG_ERRORType" minOccurs="0"
maxOccurs="unbounded"/>
			<xs:choice>
				<xs:element name="STANDARD_MESSAGE" type="STANDARD_MESSAGEType"/>
				<xs:element name="EXT_MESSAGE" type="EXT_MESSAGEType"/>
			</xs:choice>
			<xs:element name="MSG_LABEL" type="MSG_LABELType" minOccurs="0"
maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="STANDARD_MESSAGEType">
		<xs:choice>
			<xs:element name="MASTER_MESSAGE" type="MASTER_MESSAGEType"/>
			<xs:element name="ORDER_MANIFEST_IN" type="ORDER_MANIFESTType"/>
			<xs:element name="DICTIONARY_INSERT" type="DICTIONARY_INSERT_Type"/>
			<xs:element name="DICTIONARY_UPDATE" type="DICTIONARY_UPDATE_Type"/>
			<xs:element name="DICTIONARY_DELETE" type="DICTIONARY_DELETE_Type"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="EXT_MESSAGEType"/>
	<xs:complexType name="MSG_ERRORType">
		<xs:sequence>
			<xs:element ref="ERROR_ID"/>
			<xs:element ref="ERROR_MEANING"/>
			<xs:element ref="REFERENCE" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<!--***************************************************-->
	<!--** MESSAGES TYPES-->
	<!--***************************************************-->
	<xs:complexType name="CODType">
		<xs:sequence>
			<xs:element ref="VALUE"/>
			<xs:element ref="CURRENCY" minOccurs="0"/>
			<xs:element ref="CASHING_KIND" minOccurs="0"/>
			<xs:element ref="NAME" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="COMMODITYType">
		<xs:sequence>
			<xs:element ref="COMMODITY_ID" minOccurs="0"/>
			<xs:element ref="MEANING" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ORDER_MANIFESTType">
		<xs:sequence>
			<xs:element name="MANIFEST" type="MANIFESTType" minOccurs="0"/>
			<xs:element name="PACKAGE" type="PACKAGEType" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="CUSTOMS_DATAType">
		<xs:sequence>
			<xs:element ref="INSTRUCTIONS"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="DICTIONARY_INSERT_Type">
		<xs:sequence>
			<xs:element ref="TABLE_NAME"/>
			<xs:element name="KEY_COLUMNS">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="COLUMN" maxOccurs="unbounded">
							<xs:complexType>
								<xs:sequence>
									<xs:element ref="COL_NAME"/>
									<xs:element ref="COL_VALUE"/>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="COLUMNS" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="COLUMN" maxOccurs="unbounded">
							<xs:complexType>
								<xs:sequence>
									<xs:element ref="COL_NAME"/>
									<xs:element ref="COL_VALUE"/>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="DICTIONARY_UPDATE_Type">
		<xs:sequence>
			<xs:element ref="TABLE_NAME"/>
			<xs:element name="KEY_COLUMNS">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="COLUMN" maxOccurs="unbounded">
							<xs:complexType>
								<xs:sequence>
									<xs:element ref="COL_NAME"/>
									<xs:element ref="COL_VALUE"/>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="COLUMNS">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="COLUMN" maxOccurs="unbounded">
							<xs:complexType>
								<xs:sequence>
									<xs:element ref="COL_NAME"/>
									<xs:element ref="COL_VALUE" minOccurs="0"/>
									<xs:element ref="COL_VALUE_OVERRIDE" minOccurs="0"/>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="DICTIONARY_DELETE_Type">
		<xs:sequence>
			<xs:element ref="TABLE_NAME"/>
			<xs:element name="KEY_COLUMNS">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="COLUMN" maxOccurs="unbounded">
							<xs:complexType>
								<xs:sequence>
									<xs:element ref="COL_NAME"/>
									<xs:element ref="COL_VALUE"/>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="DIMENSIONType">
		<xs:sequence>
			<xs:element ref="LENGTH" minOccurs="0"/>
			<xs:element ref="WIDTH" minOccurs="0"/>
			<xs:element ref="HEIGHT" minOccurs="0"/>
			<xs:element ref="MEASURE_ID" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="FORWARDER_CODType">
		<xs:sequence>
			<xs:element name="COD" type="CODType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="FULL_ADDRESSType">
		<xs:sequence>
			<xs:element ref="NAME" minOccurs="0"/>
			<xs:element ref="NAME2" minOccurs="0"/>
			<xs:element ref="ADDRESS" minOccurs="0"/>
			<xs:element ref="ADDRESS2" minOccurs="0"/>
			<xs:element ref="ZIP" minOccurs="0"/>
			<xs:element ref="STATE" minOccurs="0"/>
			<xs:element ref="CITY" minOccurs="0"/>
			<xs:element ref="COUNTRY" minOccurs="0"/>
			<xs:element ref="COUNTRY_NAME" minOccurs="0"/>
			<xs:element ref="PHONE" minOccurs="0"/>
			<xs:element ref="FAX" minOccurs="0"/>
			<xs:element ref="E_MAIL" minOccurs="0"/>
			<xs:element ref="TELEX" minOccurs="0"/>
			<xs:element ref="CONTACTS" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="G_VALUEType">
		<xs:sequence>
			<xs:element ref="VALUE"/>
			<xs:element ref="CURRENCY" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="GOODS_CODType">
		<xs:sequence>
			<xs:element name="COD" type="CODType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="INCOTERMType">
		<xs:sequence>
			<xs:element ref="INCOTERM_ID" minOccurs="0"/>
			<xs:element ref="INCOTERM_MEANING" minOccurs="0"/>
			<xs:element ref="INCOTERM2_ID" minOccurs="0"/>
			<xs:element ref="INCOTERM2_MEANING" minOccurs="0"/>
			<xs:element name="INCOTERM2_BREAK_POINT" type="INCOTERM2_BREAK_POINTType"
minOccurs="0"/>
			<xs:element ref="INCOTERM_PLACE" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="INSURANCE_DATAType">
		<xs:sequence>
			<xs:element ref="INSURANCE_KIND" minOccurs="0"/>
			<xs:element ref="VALUE" minOccurs="0"/>
			<xs:element ref="CURRENCY" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="MASTER_MESSAGEType">
		<xs:sequence maxOccurs="unbounded">
			<xs:element name="OBBISOFT" type="OBBISOFTType" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="MSG_LABELType">
		<xs:sequence>
			<xs:element ref="LABEL_ID"/>
			<xs:element ref="LABEL_VALUE" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ORGANIZATIONType">
		<xs:sequence>
			<xs:element ref="MAIN"/>
			<xs:element ref="CENTER"/>
			<xs:element ref="TEAM"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="PACKAGEType">
		<xs:sequence>
			<xs:element ref="PACKAGE_NO" minOccurs="0"/>
			<xs:element ref="PACKAGE_XNO" minOccurs="0"/>
			<xs:element ref="CHECK_INSURANCE" minOccurs="0"/>
			<xs:element ref="CHECK_CUSTOMS" minOccurs="0"/>
			<xs:element ref="PRODUCT_ID" minOccurs="0"/>
			<xs:element name="INCOTERM" type="INCOTERMType" minOccurs="0"/>
			<xs:element ref="PACKAGE_PRINC" minOccurs="0"/>
			<xs:element ref="PACKAGE_SENDER" minOccurs="0"/>
			<xs:element ref="DEP_PLANNING_DATE" minOccurs="0"/>
			<xs:element ref="PACKAGE_CONSIGNEE" minOccurs="0"/>
			<xs:element ref="DESTINATION_COUNTRY" minOccurs="0"/>
			<xs:element ref="ARR_PLANNING_DATE" minOccurs="0"/>
			<xs:element ref="DELIVERY_PROCOP_KIND" minOccurs="0"/>
			<xs:element ref="ARR_IMPERATIVE_DATE" minOccurs="0"/>
			<xs:element ref="PACKING_UNITS" minOccurs="0"/>
			<xs:element ref="PACKING_KIND" minOccurs="0"/>
			<xs:element ref="PIECES_UNITS" minOccurs="0"/>
			<xs:element ref="RETURNABLE_UNITS" minOccurs="0"/>
			<xs:element ref="CHECK_HIGHVALUE_PARCEL" minOccurs="0"/>
			<xs:element name="COMMODITY" type="COMMODITYType" minOccurs="0"/>
			<xs:element ref="WEIGHT" minOccurs="0"/>
			<xs:element ref="LINEAR_METERS" minOccurs="0"/>
			<xs:element name="VOLUME" type="VOLUMEType" minOccurs="0"/>
			<xs:element ref="TAXABLE_UNITS_KIND" minOccurs="0"/>
			<xs:element ref="TAXABLE_UNITS" minOccurs="0"/>
			<xs:element name="G_VALUE" type="G_VALUEType" minOccurs="0"/>
			<xs:element name="GOODS_COD" type="GOODS_CODType" minOccurs="0"/>
			<xs:element name="INSURANCE_DATA" type="INSURANCE_DATAType"
			minOccurs="0"/>			<xs:element name="CUSTOMS_DATA" type="CUSTOMS_DATAType" minOccurs="0"/>
			<xs:element name="FORWARDER_COD" type="FORWARDER_CODType" minOccurs="0"/>
			<xs:element ref="CHECK_FREE_REVENUE" minOccurs="0"/>
			<xs:element ref="WB_KIND" minOccurs="0"/>
			<xs:element ref="WB_DATE" minOccurs="0"/>
			<xs:element name="PARCEL" type="PARCELType" minOccurs="0"
maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="PARCELType">
		<xs:sequence>
			<xs:element ref="PARCEL_NO" minOccurs="0"/>
			<xs:element ref="PARCEL_XNO" minOccurs="0"/>
			<xs:element ref="CHECK_LABELLED" minOccurs="0"/>
			<xs:element ref="PRINT_LABEL_DATE" minOccurs="0"/>
			<xs:element ref="PACKING_KIND" minOccurs="0"/>
			<xs:element name="DIMENSION" type="DIMENSIONType" minOccurs="0"/>
			<xs:element ref="WEIGHT" minOccurs="0"/>
			<xs:element ref="COMMODITY_MEANING" minOccurs="0"/>
			<xs:element ref="CHECK_DANGEROUS" minOccurs="0"/>
			<xs:element ref="DANGEROUS_NUMBER" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="VOLUMEType">
		<xs:sequence>
			<xs:element ref="VALUE" minOccurs="0"/>
			<xs:element ref="MEASURE_ID" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="WEIGHTType">
		<xs:sequence>
			<xs:element ref="GROSS_WEIGHT" minOccurs="0"/>
			<xs:element ref="NET_WEIGHT" minOccurs="0"/>
			<xs:element ref="MEASURE_ID" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<!--***************************************************-->
	<!--** MASTER USE TYPES-->
	<!--***************************************************-->
	<xs:simpleType name="NotEmptyString">
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="DurationType">
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="BooleanType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="TRUE"/>
			<xs:enumeration value="FALSE"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="DELIVERY_TERMSType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="COD"/>
			<xs:enumeration value="COC"/>
			<xs:enumeration value="COB"/>
			<xs:enumeration value="CAD"/>
			<xs:enumeration value="LC"/>
			<xs:enumeration value="DF"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="INCOTERM2_BREAK_POINTType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="EXW"/>
			<xs:enumeration value="SCF"/>
			<xs:enumeration value="CCF"/>
			<xs:enumeration value="CLP"/>
			<xs:enumeration value="DLP"/>
			<xs:enumeration value="DDU"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="OPERATION_KINDType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="RFR_OPER"/>
			<xs:enumeration value="TFR_OPER"/>
			<xs:enumeration value="SFR_OPER"/>
			<xs:enumeration value="AFR_OPER"/>
			<xs:enumeration value="WRK_OPER"/>
			<xs:enumeration value="PRK_OPER"/>
			<xs:enumeration value="HAN_OPER"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="ROLE_DESCType">
		<xs:sequence>
			<xs:element ref="TPOP_ID" minOccurs="0"/>
			<xs:element name="FULL_ADDRESS" type="FULL_ADDRESSType" minOccurs="0"/>
			<xs:element ref="REFERENCE" minOccurs="0"/>
			<xs:element ref="INSTRUCTIONS" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="DATE_TIMEZONEType">
		<xs:sequence>
			<xs:element ref="DATE_VALUE"/>
			<xs:element ref="TIME_ZONE" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<!--***************************************************-->
	<!--ROLE_DESCType-->
	<xs:element name="PACKAGE_CONSIGNEE" type="ROLE_DESCType"/>
	<xs:element name="PACKAGE_PRINC" type="ROLE_DESCType"/>
	<xs:element name="PACKAGE_SENDER" type="ROLE_DESCType"/>
	<!--***************************************************-->
	<!--DATE_TIMEZONEType-->
	<xs:element name="DEP_PLANNING_DATE" type="DATE_TIMEZONEType"/>
	<xs:element name="ARR_PLANNING_DATE" type="DATE_TIMEZONEType"/>
	<xs:element name="PRINT_LABEL_DATE" type="DATE_TIMEZONEType"/>
	<xs:element name="WB_DATE" type="DATE_TIMEZONEType"/>
	<!--***************************************************-->
	<!--** OTHER TYPES-->
	<!--***************************************************-->
	<xs:complexType name="MANIFESTType">
		<xs:annotation>
			<xs:documentation>Upgrade IX</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element ref="MANIFEST_KIND" minOccurs="0"/>
			<xs:element ref="MANIFEST_NO" minOccurs="0"/>
			<xs:element ref="MANIFEST_DATE" minOccurs="0"/>
			<xs:element ref="DEPOSIT_PROCOP_KIND" minOccurs="0"/>
			<xs:element ref="DEPOSIT_OPERATION_NO" minOccurs="0"/>
			<xs:element name="SENDER_TPOP_ID" type="NotEmptyString" minOccurs="0"/>
			<xs:element name="CONSIGNEE_TPOP_ID" type="NotEmptyString" minOccurs="0"/>
			<xs:element ref="DEP_PLATFORM_ID" minOccurs="0"/>
			<xs:element ref="ARR_PLATFORM_ID" minOccurs="0"/>
			<xs:element ref="INSTRUCTIONS" minOccurs="0"/>
			<xs:element ref="GROSS_WEIGHT" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="PO_BOXType">
		<xs:sequence>
			<xs:element ref="PO_BOX_NO" minOccurs="0"/>
			<xs:element ref="ZIP" minOccurs="0"/>
			<xs:element ref="CITY" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<!--##################################-->
	<!--** ELEMENTS-->
	<!--##################################-->
	<!--DATE_TIMEZONEType-->
	<xs:element name="ARR_IMPERATIVE_DATE" type="DATE_TIMEZONEType">
		<xs:annotation>
			<xs:documentation>NEW IX</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="MANIFEST_DATE" type="DATE_TIMEZONEType"/>
	<!--##################################-->
	<!--NotEmptyString-->
	<xs:element name="ADDRESS" type="NotEmptyString"/>
	<xs:element name="ADDRESS2" type="NotEmptyString"/>
	<xs:element name="ADDRESS_ID" type="NotEmptyString"/>
	<xs:element name="ARR_PLATFORM_ID" type="NotEmptyString"/>
	<xs:element name="CASHING_KIND" type="NotEmptyString"/>
	<xs:element name="CENTER" type="NotEmptyString"/>
	<xs:element name="CITY" type="NotEmptyString"/>
	<xs:element name="COL_NAME" type="NotEmptyString"/>
	<xs:element name="COL_VALUE" type="NotEmptyString"/>
	<xs:element name="COL_VALUE_OVERRIDE" type="BooleanType"/>
	<xs:element name="COMMODITY_ID" type="NotEmptyString"/>
	<xs:element name="COMMODITY_MEANING" type="NotEmptyString"/>
	<xs:element name="CONTACTS" type="NotEmptyString"/>
	<xs:element name="COUNTRY" type="NotEmptyString"/>
	<xs:element name="COUNTRY_NAME" type="NotEmptyString">
		<xs:annotation>
			<xs:documentation>NEW IX</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="CURRENCY" type="NotEmptyString"/>
	<xs:element name="DANGEROUS_NUMBER" type="NotEmptyString"/>
	<xs:element name="DATE_VALUE" type="NotEmptyString"/>
	<xs:element name="DELIVERY_PROCOP_KIND" type="NotEmptyString">
		<xs:annotation>
			<xs:documentation>NEW IX</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="DEP_PLATFORM_ID" type="NotEmptyString"/>
	<xs:element name="DEPOSIT_OPERATION_NO" type="NotEmptyString"/>
	<xs:element name="DEPOSIT_PROCOP_KIND" type="NotEmptyString"/>
	<xs:element name="DESTINATION_COUNTRY" type="NotEmptyString"/>
	<xs:element name="DESCRIPTION" type="NotEmptyString"/>
	<xs:element name="E_MAIL" type="NotEmptyString"/>
	<xs:element name="ERROR_ID" type="NotEmptyString"/>
	<xs:element name="ERROR_MEANING" type="NotEmptyString"/>
	<xs:element name="EXT_MESSAGE" type="NotEmptyString"/>
	<xs:element name="EXT_SYSTEM" type="NotEmptyString"/>
	<xs:element name="FAX" type="NotEmptyString"/>
	<xs:element name="FISCAL_NO" type="NotEmptyString"/>
	<xs:element name="INCOTERM2_ID" type="NotEmptyString"/>
	<xs:element name="INCOTERM_ID" type="NotEmptyString"/>
	<xs:element name="INCOTERM_MEANING" type="NotEmptyString"/>
	<xs:element name="INCOTERM2_MEANING" type="NotEmptyString"/>
	<xs:element name="INCOTERM_PLACE" type="NotEmptyString"/>
	<xs:element name="INSTRUCTIONS" type="NotEmptyString"/>
	<xs:element name="INSURANCE" type="NotEmptyString"/>
	<xs:element name="INSURANCE_KIND" type="NotEmptyString"/>
	<xs:element name="LABEL_ID" type="NotEmptyString"/>
	<xs:element name="LABEL_VALUE" type="NotEmptyString"/>
	<xs:element name="LANGUAGE_ID" type="NotEmptyString"/>
	<xs:element name="MAIN" type="NotEmptyString"/>
	<xs:element name="MANIFEST_NO" type="NotEmptyString"/>
	<xs:element name="MANIFEST_KIND" type="NotEmptyString"/>
	<xs:element name="MEANING" type="NotEmptyString"/>
	<xs:element name="MEASURE_ID" type="NotEmptyString"/>
	<xs:element name="MESSAGE_NO" type="NotEmptyString"/>
	<xs:element name="MESSAGE_VERSION_NO">
		<xs:simpleType>
			<xs:restriction base="xs:integer">
				<xs:minInclusive value="0"/>
				<xs:maxInclusive value="999"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<xs:element name="MASTER_ID" type="NotEmptyString"/>
	<xs:element name="NAME" type="NotEmptyString"/>
	<xs:element name="NAME2" type="NotEmptyString"/>
	<xs:element name="PACKING_KIND" type="NotEmptyString"/>
	<xs:element name="PACKAGE_NO" type="NotEmptyString"/>
	<xs:element name="PACKAGE_XNO" type="NotEmptyString"/>
	<xs:element name="PARCEL_NO" type="NotEmptyString"/>
	<xs:element name="PARCEL_XNO" type="NotEmptyString"/>
	<xs:element name="PIECES_UNITS" type="NotEmptyString"/>
	<xs:element name="PHONE" type="NotEmptyString"/>
	<xs:element name="PLATFORM_ID" type="NotEmptyString"/>
	<xs:element name="PLATFORM_NAME"/>
	<xs:element name="PO_BOX_NO" type="NotEmptyString"/>
	<xs:element name="PRODUCT_ID" type="NotEmptyString"/>
	<xs:element name="REFERENCE2" type="NotEmptyString"/>
	<xs:element name="REFERENCE" type="NotEmptyString"/>
	<xs:element name="STATE" type="NotEmptyString"/>
	<xs:element name="TABLE_NAME" type="NotEmptyString"/>
	<xs:element name="TAXABLE_UNITS_KIND" type="NotEmptyString"/>
	<xs:element name="TEAM" type="NotEmptyString"/>
	<xs:element name="TELEX" type="NotEmptyString"/>
	<xs:element name="TPOP_ID" type="NotEmptyString"/>
	<xs:element name="USER_ID" type="NotEmptyString"/>
	<xs:element name="WB_KIND" type="NotEmptyString"/>
	<xs:element name="WEIGHT" type="WEIGHTType">
		<xs:annotation>
			<xs:documentation>NEW IX</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="ZIP" type="NotEmptyString"/>
	<!--##################################-->
	<!--duration-->
	<xs:element name="TIME_VALUE" type="DurationType"/>
	<!--##################################-->
	<!--boolean-->
	<xs:element name="CHECK_CUSTOMS" type="BooleanType"/>
	<xs:element name="CHECK_DANGEROUS" type="BooleanType"/>
	<xs:element name="CHECK_FREE_REVENUE" type="BooleanType"/>
	<xs:element name="CHECK_HIGHVALUE_PARCEL" type="BooleanType"/>
	<xs:element name="CHECK_INSURANCE" type="BooleanType"/>
	<xs:element name="CHECK_LABELLED" type="BooleanType"/>
	<!--##################################-->
	<!--int-->
	<xs:element name="PACKING_UNITS" type="xs:integer"/>
	<xs:element name="RETURNABLE_UNITS" type="xs:integer"/>
	<xs:element name="TIME_ZONE">
		<xs:simpleType>
			<xs:restriction base="xs:integer">
				<xs:minInclusive value="-12"/>
				<xs:maxInclusive value="+13"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<!--##################################-->
	<!--decimal-->
	<xs:element name="GROSS_WEIGHT" type="xs:decimal"/>
	<xs:element name="HEIGHT" type="xs:decimal"/>
	<xs:element name="LENGTH" type="xs:decimal"/>
	<xs:element name="LINEAR_METERS" type="xs:decimal"/>
	<xs:element name="TAXABLE_UNITS" type="xs:decimal"/>
	<xs:element name="VALUE" type="xs:decimal"/>
	<xs:element name="WIDTH" type="xs:decimal"/>
	<xs:element name="NET_WEIGHT" type="xs:decimal"/>
	<xs:element name="KM_VALUE" type="xs:decimal"/>
	<!--##################################-->
</xs:schema>



Kind regards

Michael Lindenau
Lvsungen+Ideen

Alejandro Puskin No 1, Portal H, 5C
29011 Malaga
Spanien

phone +49 179  29 28 834
mailto:michael.lindenau@xxxxxxxxxxxxxxxxxxxxxx

"It never hurts to multiply by zero -- it simplifies things a lot!" <Richard
Keeler>

Current Thread