Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
XmlAdapter and schema
Message
De
20/04/2003 18:09:05
 
 
À
16/04/2003 03:55:08
Information générale
Forum:
Visual FoxPro
Catégorie:
Autre
Divers
Thread ID:
00777588
Message ID:
00779647
Vues:
42
>
Still we need some examples on how to use these powerful tools
>
Hi Dimitris,

There is another way to accomplish the same result - create external XML schema that describes XML document and set XMLSchemaLocation property to make XMLAdapter use it.
CLOSE DATABASES all
clear

TEXT TO cXml NOSHOW
<?xml version="1.0" encoding="utf-8" ?> 
<root>
	<Header Sender='CompanyA' Recipient='CompanyB'/>
	<Detail Trailer_ID='3545452355454234' Lorry_ID='1523445532'/>
	<Detail Trailer_ID='4444442355454234' Lorry_ID='5555545532'/>
</root>	
ENDTEXT


TEXT TO cXmlSchema NOSHOW
<?xml version="1.0" encoding="utf-8" ?> 
<xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" 
        xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" 
        attributeFormDefault="qualified" elementFormDefault="qualified">
	<xs:element name="root" msdata:IsDataSet="true">
		<xs:complexType>
			<xs:choice maxOccurs="unbounded">
				<xs:element name="Header">
					<xs:complexType>
						<xs:attribute name="Sender" form="unqualified">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:maxLength value="10" /> 
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="Recipient" form="unqualified">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:maxLength value="10" /> 
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
					</xs:complexType>
				</xs:element>
				<xs:element name="Detail">
					<xs:complexType>
						<xs:attribute name="Trailer_ID" form="unqualified">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:maxLength value="20" /> 
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="Lorry_ID" form="unqualified">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:maxLength value="10" /> 
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
					</xs:complexType>
				</xs:element>
			</xs:choice>
		</xs:complexType>
	</xs:element>
</xs:schema>
ENDTEXT

STRTOFILE(cXmlSchema,"NewSchema.xsd")

LOCAL oXA as XMLAdapter, oXT as XMLTable

oXA=CREATEOBJECT("XMLAdapter")
oXA.XMLSchemaLocation="NewSchema.xsd"
oXA.LoadXML(cXml)

FOR EACH oXT IN oXA.Tables
	?oXT.ToCursor()
	SELECT (oXT.Alias)
	?ALIAS()
	LIST
NEXT

return
CLOSE DATABASES all
clear

TEXT TO cXml NOSHOW
<?xml version="1.0" encoding="utf-8" ?> 
<root>
	<Header Sender='CompanyA' Recipient='CompanyB'>
		<Detail Trailer_ID='3545452355454234' Lorry_ID='1523445532'/>
		<Detail Trailer_ID='4444442355454234' Lorry_ID='5555545532'/>
	</Header>	
</root>	
ENDTEXT


TEXT TO cXmlSchema NOSHOW
<?xml version="1.0" encoding="utf-8" ?> 
<xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" 
        xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" 
        attributeFormDefault="qualified" elementFormDefault="qualified">
	<xs:element name="root" msdata:IsDataSet="true">
		<xs:complexType>
			<xs:choice maxOccurs="unbounded">
				<xs:element name="Header">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Detail"  minOccurs="0" maxOccurs="unbounded">
								<xs:complexType>
									<xs:attribute name="Trailer_ID" form="unqualified">
										<xs:simpleType>
											<xs:restriction base="xs:string">
												<xs:maxLength value="20" /> 
											</xs:restriction>
										</xs:simpleType>
									</xs:attribute>
									<xs:attribute name="Lorry_ID" form="unqualified">
										<xs:simpleType>
											<xs:restriction base="xs:string">
												<xs:maxLength value="10" /> 
											</xs:restriction>
										</xs:simpleType>
									</xs:attribute>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
						<xs:attribute name="Sender" form="unqualified">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:maxLength value="10" /> 
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
						<xs:attribute name="Recipient" form="unqualified">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:maxLength value="10" /> 
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
					</xs:complexType>
				</xs:element>
			</xs:choice>
		</xs:complexType>
	</xs:element>
</xs:schema>
ENDTEXT

STRTOFILE(cXmlSchema,"NewSchema.xsd")

LOCAL oXA as XMLAdapter, oXT as XMLTable

oXA=CREATEOBJECT("XMLAdapter")
oXA.XMLSchemaLocation="NewSchema.xsd"
oXA.LoadXML(cXml)

FOR EACH oXT IN oXA.Tables
	?oXT.ToCursor()
	SELECT (oXT.Alias)
	?ALIAS()
	LIST
NEXT

return
Thanks,
Aleksey.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform