1
0
mirror of synced 2024-11-21 13:43:49 +00:00

Support for renaming properties using the Hints file

Fixed support for simple type collections
This commit is contained in:
Mark van Renswoude 2009-09-29 15:12:47 +00:00
parent 56013f783a
commit 5e75e3435f
7 changed files with 414 additions and 31 deletions

View File

@ -82,6 +82,10 @@ object MainForm: TMainForm
TabOrder = 2
object spFile: TTabSheet
TabVisible = False
ExplicitLeft = 0
ExplicitTop = 0
ExplicitWidth = 0
ExplicitHeight = 0
object lblFile: TLabel
Left = 8
Top = 7
@ -103,6 +107,10 @@ object MainForm: TMainForm
end
object spFolder: TTabSheet
TabVisible = False
ExplicitLeft = 0
ExplicitTop = 0
ExplicitWidth = 0
ExplicitHeight = 0
DesignSize = (
408
85)

View File

@ -90,6 +90,7 @@ uses
type
TProtectedXMLDataBindingItem = class(TXMLDataBindingItem);
TProtectedXMLDataBindingProperty = class(TXMLDataBindingProperty);
THintsDelphiXMLDataBindingGenerator = class(TDelphiXMLDataBindingGenerator)
private
@ -102,6 +103,7 @@ type
procedure ProcessEnumerations;
procedure ProcessDocumentElements;
procedure ProcessInterfaces;
procedure ProcessProperties;
function FindSchema(const ASchemaName: String; out ASchema: TXMLDataBindingSchema): Boolean;
function FindNode(const ASchemaName, AXPath: String; out AItem: TXMLDataBindingItem): Boolean;
@ -391,6 +393,9 @@ begin
if Hints.HasInterfaces then
ProcessInterfaces;
if Hints.HasProperties then
ProcessProperties;
end;
@ -482,6 +487,26 @@ begin
end;
procedure THintsDelphiXMLDataBindingGenerator.ProcessProperties;
var
itemIndex: Integer;
propertyName: IXMLPropertyName;
schemaItem: TXMLDataBindingItem;
begin
for itemIndex := 0 to Pred(Hints.Properties.Count) do
begin
propertyName := Hints.Properties[itemIndex];
if FindNode(propertyName.Schema, propertyName.XPath, schemaItem) then
begin
if schemaItem.ItemType = itProperty then
schemaItem.TranslatedName := propertyName.Text;
end;
end;
end;
function THintsDelphiXMLDataBindingGenerator.FindSchema(const ASchemaName: String; out ASchema: TXMLDataBindingSchema): Boolean;
var
schemaIndex: Integer;
@ -562,6 +587,9 @@ var
item: TProtectedXMLDataBindingItem;
itemIndex: Integer;
domDocument: IXMLDOMDocument2;
interfaceItem: TXMLDataBindingInterface;
propertyIndex: Integer;
propertyItem: TProtectedXMLDataBindingProperty;
begin
Result := False;
@ -584,10 +612,27 @@ begin
begin
AItem := schema.Items[itemIndex];
Result := True;
end else if item.ItemType = itInterface then
begin
interfaceItem := TXMLDataBindingInterface(item);
for propertyIndex := 0 to Pred(interfaceItem.PropertyCount) do
begin
propertyItem := TProtectedXMLDataBindingProperty(interfaceItem.Properties[propertyIndex]);
if Assigned(propertyItem.SchemaItem) and SameNode(propertyItem.SchemaItem.DOMNode, schemaItem) then
begin
AItem := propertyItem;
Result := True;
Break;
end;
end;
end;
if Result then
Break;
end;
end;
end;
end;

View File

@ -1,7 +1,7 @@
{
X2Software XML Data Binding
Generated on: 14-5-2008 11:21:00
Generated on: 29-9-2009 14:31:13
Generated from: P:\test\XMLDataBinding\XSD\DataBindingHints.xsd
}
unit DataBindingHintsXML;
@ -22,19 +22,23 @@ type
IXMLDocumentElement = interface;
IXMLInterfaces = interface;
IXMLInterfaceName = interface;
IXMLProperties = interface;
IXMLPropertyName = interface;
{ Interfaces for DataBindingHints }
{
Contains hints and mappings for the data binding output
}
IXMLDataBindingHints = interface(IXMLNode)
['{D2B7C152-7F8F-4B0F-9270-7330351B8D4E}']
['{434CBC09-8E33-4970-9C4A-535B4C898185}']
function GetHasEnumerations: Boolean;
function GetEnumerations: IXMLEnumerations;
function GetHasDocumentElements: Boolean;
function GetDocumentElements: IXMLDocumentElements;
function GetHasInterfaces: Boolean;
function GetInterfaces: IXMLInterfaces;
function GetHasProperties: Boolean;
function GetProperties: IXMLProperties;
property HasEnumerations: Boolean read GetHasEnumerations;
property Enumerations: IXMLEnumerations read GetEnumerations;
@ -42,10 +46,12 @@ type
property DocumentElements: IXMLDocumentElements read GetDocumentElements;
property HasInterfaces: Boolean read GetHasInterfaces;
property Interfaces: IXMLInterfaces read GetInterfaces;
property HasProperties: Boolean read GetHasProperties;
property Properties: IXMLProperties read GetProperties;
end;
IXMLEnumerations = interface(IXMLNodeCollection)
['{1D5E90E0-06DD-4476-BA73-0753D35B6193}']
['{115ECCB0-407B-476E-AA99-63F584F883F7}']
function Get_Enumeration(Index: Integer): IXMLEnumeration;
function Add: IXMLEnumeration;
function Insert(Index: Integer): IXMLEnumeration;
@ -54,7 +60,7 @@ type
end;
IXMLEnumeration = interface(IXMLNodeCollection)
['{07097378-D346-4809-B0A2-86C4BA09C124}']
['{4B776A26-325C-4589-8F5B-88E2EE86DEC6}']
function Get_Member(Index: Integer): IXMLMember;
function Add: IXMLMember;
function Insert(Index: Integer): IXMLMember;
@ -72,7 +78,7 @@ type
end;
IXMLMember = interface(IXMLNode)
['{A5C711D5-FEC5-4490-A36B-A2687AB39748}']
['{2575F0F6-EDCA-4CC6-B532-94833BCFAB64}']
function GetName: WideString;
procedure SetName(const Value: WideString);
@ -85,7 +91,7 @@ type
a Document Element.
}
IXMLDocumentElements = interface(IXMLNodeCollection)
['{E6C9CBB2-7457-4597-939D-AAE9B1C5F42B}']
['{8D3A5543-68FF-4101-9874-639A39E33950}']
function Get_DocumentElement(Index: Integer): IXMLDocumentElement;
function Add: IXMLDocumentElement;
function Insert(Index: Integer): IXMLDocumentElement;
@ -94,7 +100,7 @@ type
end;
IXMLDocumentElement = interface(IXMLNode)
['{93F6182F-4E03-420A-8E84-49F33DC29FA3}']
['{3DFD0655-26DA-4237-ACEC-BB7CB3354DD2}']
function GetSchema: WideString;
function GetXPath: WideString;
@ -106,7 +112,7 @@ type
end;
IXMLInterfaces = interface(IXMLNodeCollection)
['{A18D3AFF-24FC-45FD-9583-15D9292249D2}']
['{E70E67E3-C108-4015-B996-962D800BE555}']
function Get_InterfaceName(Index: Integer): IXMLInterfaceName;
function Add: IXMLInterfaceName;
function Insert(Index: Integer): IXMLInterfaceName;
@ -115,15 +121,34 @@ type
end;
IXMLInterfaceName = interface(IXMLNode)
['{EB24ED8F-0D81-48D5-A420-438CAE003A23}']
function GetHasSchema: Boolean;
['{2B8126E7-2F89-4E5D-89E3-4F5F7AEE35E9}']
function GetSchema: WideString;
function GetXPath: WideString;
procedure SetSchema(const Value: WideString);
procedure SetXPath(const Value: WideString);
property Schema: WideString read GetSchema write SetSchema;
property XPath: WideString read GetXPath write SetXPath;
end;
IXMLProperties = interface(IXMLNodeCollection)
['{88260AE1-1C40-4F0F-AA44-C61EDAA53B38}']
function Get_PropertyName(Index: Integer): IXMLPropertyName;
function Add: IXMLPropertyName;
function Insert(Index: Integer): IXMLPropertyName;
property PropertyName[Index: Integer]: IXMLPropertyName read Get_PropertyName; default;
end;
IXMLPropertyName = interface(IXMLNode)
['{DB714E5D-E62B-44C4-B7D4-0623887BCDF6}']
function GetSchema: WideString;
function GetXPath: WideString;
procedure SetSchema(const Value: WideString);
procedure SetXPath(const Value: WideString);
property HasSchema: Boolean read GetHasSchema;
property Schema: WideString read GetSchema write SetSchema;
property XPath: WideString read GetXPath write SetXPath;
end;
@ -140,6 +165,8 @@ type
function GetDocumentElements: IXMLDocumentElements;
function GetHasInterfaces: Boolean;
function GetInterfaces: IXMLInterfaces;
function GetHasProperties: Boolean;
function GetProperties: IXMLProperties;
end;
TXMLEnumerations = class(TXMLNodeCollection, IXMLEnumerations)
@ -202,7 +229,24 @@ type
TXMLInterfaceName = class(TXMLNode, IXMLInterfaceName)
protected
function GetHasSchema: Boolean;
function GetSchema: WideString;
function GetXPath: WideString;
procedure SetSchema(const Value: WideString);
procedure SetXPath(const Value: WideString);
end;
TXMLProperties = class(TXMLNodeCollection, IXMLProperties)
public
procedure AfterConstruction; override;
protected
function Get_PropertyName(Index: Integer): IXMLPropertyName;
function Add: IXMLPropertyName;
function Insert(Index: Integer): IXMLPropertyName;
end;
TXMLPropertyName = class(TXMLNode, IXMLPropertyName)
protected
function GetSchema: WideString;
function GetXPath: WideString;
@ -212,7 +256,7 @@ type
{ Document functions }
function GetDataBindingHints(ADocument: IXMLDocument): IXMLDataBindingHints;
function GetDataBindingHints(ADocument: XMLIntf.IXMLDocument): IXMLDataBindingHints;
function LoadDataBindingHints(const AFileName: String): IXMLDataBindingHints;
function LoadDataBindingHintsFromStream(AStream: TStream): IXMLDataBindingHints;
function NewDataBindingHints: IXMLDataBindingHints;
@ -227,7 +271,7 @@ uses
SysUtils;
{ Document functions }
function GetDataBindingHints(ADocument: IXMLDocument): IXMLDataBindingHints;
function GetDataBindingHints(ADocument: XMLIntf.IXMLDocument): IXMLDataBindingHints;
begin
Result := ADocument.GetDocBinding('DataBindingHints', TXMLDataBindingHints, TargetNamespace) as IXMLDataBindingHints
end;
@ -239,7 +283,7 @@ end;
function LoadDataBindingHintsFromStream(AStream: TStream): IXMLDataBindingHints;
var
doc: IXMLDocument;
doc: XMLIntf.IXMLDocument;
begin
doc := NewXMLDocument;
@ -260,6 +304,7 @@ begin
RegisterChildNode('Enumerations', TXMLEnumerations);
RegisterChildNode('DocumentElements', TXMLDocumentElements);
RegisterChildNode('Interfaces', TXMLInterfaces);
RegisterChildNode('Properties', TXMLProperties);
inherited;
end;
@ -296,6 +341,17 @@ begin
Result := (ChildNodes['Interfaces'] as IXMLInterfaces);
end;
function TXMLDataBindingHints.GetHasProperties: Boolean;
begin
Result := Assigned(ChildNodes.FindNode('Properties'));
end;
function TXMLDataBindingHints.GetProperties: IXMLProperties;
begin
Result := (ChildNodes['Properties'] as IXMLProperties);
end;
procedure TXMLEnumerations.AfterConstruction;
begin
RegisterChildNode('Enumeration', TXMLEnumeration);
@ -446,12 +502,6 @@ begin
Result := (AddItem(Index) as IXMLInterfaceName);
end;
function TXMLInterfaceName.GetHasSchema: Boolean;
begin
Result := Assigned(ChildNodes.FindNode('Schema'));
end;
function TXMLInterfaceName.GetSchema: WideString;
begin
Result := AttributeNodes['Schema'].Text;
@ -472,6 +522,51 @@ begin
SetAttribute('XPath', Value);
end;
procedure TXMLProperties.AfterConstruction;
begin
RegisterChildNode('PropertyName', TXMLPropertyName);
ItemTag := 'PropertyName';
ItemInterface := IXMLPropertyName;
inherited;
end;
function TXMLProperties.Get_PropertyName(Index: Integer): IXMLPropertyName;
begin
Result := (List[Index] as IXMLPropertyName);
end;
function TXMLProperties.Add: IXMLPropertyName;
begin
Result := (AddItem(-1) as IXMLPropertyName);
end;
function TXMLProperties.Insert(Index: Integer): IXMLPropertyName;
begin
Result := (AddItem(Index) as IXMLPropertyName);
end;
function TXMLPropertyName.GetSchema: WideString;
begin
Result := AttributeNodes['Schema'].Text;
end;
function TXMLPropertyName.GetXPath: WideString;
begin
Result := AttributeNodes['XPath'].Text;
end;
procedure TXMLPropertyName.SetSchema(const Value: WideString);
begin
SetAttribute('Schema', Value);
end;
procedure TXMLPropertyName.SetXPath(const Value: WideString);
begin
SetAttribute('XPath', Value);
end;
end.

View File

@ -289,7 +289,7 @@ var
begin
case AProperty.PropertyType of
ptSimple:
if Assigned(AProperty.Collection) then
if AProperty.IsRepeating then
begin
if AInterfaceName then
Result := ItemInterface
@ -675,6 +675,9 @@ var
parent: String;
begin
if AItem.Name = 'KeyStrokesType' then
asm int 3 end;
if ASection in [dxsInterface, dxsClass] then
begin
{ Ensure the base item is completely defined first, Delphi doesn't allow

138
X2XMLDataBinding.dof Normal file
View File

@ -0,0 +1,138 @@
[FileVersion]
Version=7.0
[Compiler]
A=8
B=0
C=0
D=1
E=0
F=0
G=1
H=1
I=1
J=0
K=0
L=1
M=0
N=1
O=0
P=1
Q=0
R=0
S=0
T=0
U=0
V=1
W=0
X=1
Y=2
Z=1
ShowHints=1
ShowWarnings=1
UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
NamespacePrefix=
SymbolDeprecated=1
SymbolLibrary=1
SymbolPlatform=1
UnitLibrary=1
UnitPlatform=1
UnitDeprecated=1
HResultCompat=1
HidingMember=1
HiddenVirtual=1
Garbage=1
BoundsError=1
ZeroNilCompat=1
StringConstTruncated=1
ForLoopVarVarPar=1
TypedConstVarPar=1
AsgToTypedConst=1
CaseLabelRange=1
ForVariable=1
ConstructingAbstract=1
ComparisonFalse=1
ComparisonTrue=1
ComparingSignedUnsigned=1
CombiningSignedUnsigned=1
UnsupportedConstruct=1
FileOpen=1
FileOpenUnitSrc=1
BadGlobalSymbol=1
DuplicateConstructorDestructor=1
InvalidDirective=1
PackageNoLink=1
PackageThreadVar=1
ImplicitImport=1
HPPEMITIgnored=1
NoRetVal=1
UseBeforeDef=1
ForLoopVarUndef=1
UnitNameMismatch=1
NoCFGFileFound=1
MessageDirective=1
ImplicitVariants=1
UnicodeToLocale=1
LocaleToUnicode=1
ImagebaseMultiple=1
SuspiciousTypecast=1
PrivatePropAccessor=1
UnsafeType=0
UnsafeCode=0
UnsafeCast=0
[Linker]
MapFile=3
OutputObjs=0
ConsoleApp=1
DebugInfo=0
RemoteSymbols=0
MinStackSize=16384
MaxStackSize=1048576
ImageBase=4194304
ExeDescription=
[Directories]
OutputDir=
UnitOutputDir=lib
PackageDLLOutputDir=
PackageDCPOutputDir=
SearchPath=
Packages=vcl;rtl;vclx;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;vcldb;dsnapcon;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;CLXIB;ibxpress;VCLIB;teeui;teedb;tee;dss;vclactnband;vclshlctrls;dclOfficeXP;Indy70;cxLibraryVCLD7;dxBarD7;dxComnD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxsbD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxPageControlVCLD7;cxGridVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;cxVerticalGridVCLD7;cxSpreadSheetVCLD7;dxNavBarD7;cxWebD7;cxWebPascalScriptD7;cxWebSnapD7;cxWebTeeChartD7;dxMasterViewD7;dxmdsD7;dxdbtrD7;dxtrmdD7;dxorgcD7;dxdborD7;dxFlowChartD7;dxLayoutControlD7;dxLayoutControlcxEditAdaptersD7;dxPSCoreD7;dxPSTeeChartD7;dxPsPrVwAdvD7;dxPSLnksD7;dxPSdxOCLnkD7;dxPSdxMVLnkD7;dxPSdxLCLnkD7;dxPSdxFCLnkD7;dxPSdxDBTVLnkD7;dxPSdxDBOCLnkD7;dxPSDBTeeChartD7;dxPScxCommonD7;dxPScxTLLnkD7;dxPScxSSLnkD7;dxPScxPCProdD7;dxPScxGridLnkD7;dxPScxExtCommonD7;dxPScxVGridLnkD7;fo_d7;xtx_d7;Rave50CLX;Rave50VCL;pngimaged7;dxGDIPlusD7;UnRegDxPNG
Conditionals=
DebugSourceDirs=
UsePackages=0
[Parameters]
RunParams=P:\test\DealerMap\xsd\kml21-simplified.xsd
HostApplication=
Launcher=
UseLauncher=0
DebugCWD=
[Language]
ActiveLang=
ProjectLang=
RootDir=C:\Program Files\Borland\Delphi7\Bin\
[Version Info]
IncludeVerInfo=0
AutoIncBuild=0
MajorVer=0
MinorVer=0
Release=0
Build=0
Debug=0
PreRelease=0
Special=0
Private=0
DLL=0
Locale=1043
CodePage=1252
[Version Info Keys]
CompanyName=
FileDescription=
FileVersion=0.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=
Comments=
[Excluded Packages]
C:\Program Files\Borland\Indy\D7\dclIndy70.bpl=Internet Direct (Indy) for D7 Property and Component Editors

81
X2XMLDataBinding.dproj Normal file
View File

@ -0,0 +1,81 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{983dfcaf-23ca-48a0-a147-d96769428a71}</ProjectGuid>
<MainSource>X2XMLDataBinding.dpr</MainSource>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<DCC_DCCCompiler>DCC32</DCC_DCCCompiler>
<DCC_DependencyCheckOutputName>X2XMLDataBinding.exe</DCC_DependencyCheckOutputName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<Version>7.0</Version>
<DCC_DebugInformation>False</DCC_DebugInformation>
<DCC_LocalDebugSymbols>False</DCC_LocalDebugSymbols>
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
<DCC_MapFile>3</DCC_MapFile>
<DCC_Define>RELEASE</DCC_Define>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<Version>7.0</Version>
<DCC_MapFile>3</DCC_MapFile>
<DCC_Define>DEBUG</DCC_Define>
</PropertyGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality</Borland.Personality>
<Borland.ProjectType />
<BorlandProject>
<BorlandProject xmlns=""> <Delphi.Personality> <Parameters>
<Parameters Name="UseLauncher">False</Parameters>
<Parameters Name="LoadAllSymbols">True</Parameters>
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
</Parameters>
<VersionInfo>
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
<VersionInfo Name="MajorVer">1</VersionInfo>
<VersionInfo Name="MinorVer">0</VersionInfo>
<VersionInfo Name="Release">0</VersionInfo>
<VersionInfo Name="Build">0</VersionInfo>
<VersionInfo Name="Debug">False</VersionInfo>
<VersionInfo Name="PreRelease">False</VersionInfo>
<VersionInfo Name="Special">False</VersionInfo>
<VersionInfo Name="Private">False</VersionInfo>
<VersionInfo Name="DLL">False</VersionInfo>
<VersionInfo Name="Locale">1043</VersionInfo>
<VersionInfo Name="CodePage">1252</VersionInfo>
</VersionInfo>
<VersionInfoKeys>
<VersionInfoKeys Name="CompanyName"></VersionInfoKeys>
<VersionInfoKeys Name="FileDescription"></VersionInfoKeys>
<VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
<VersionInfoKeys Name="InternalName"></VersionInfoKeys>
<VersionInfoKeys Name="LegalCopyright"></VersionInfoKeys>
<VersionInfoKeys Name="LegalTrademarks"></VersionInfoKeys>
<VersionInfoKeys Name="OriginalFilename"></VersionInfoKeys>
<VersionInfoKeys Name="ProductName"></VersionInfoKeys>
<VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
<VersionInfoKeys Name="Comments"></VersionInfoKeys>
</VersionInfoKeys>
<Source>
<Source Name="MainSource">X2XMLDataBinding.dpr</Source>
</Source>
</Delphi.Personality> </BorlandProject></BorlandProject>
</ProjectExtensions>
<Import Project="$(MSBuildBinPath)\Borland.Delphi.Targets" />
<ItemGroup>
<DelphiCompile Include="X2XMLDataBinding.dpr">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="Forms\MainFrm.pas">
<Form>MainForm</Form>
</DCCReference>
<DCCReference Include="Units\DataBindingHintsXML.pas" />
<DCCReference Include="Units\DataBindingSettingsXML.pas" />
<DCCReference Include="Units\DelphiXMLDataBindingGenerator.pas" />
<DCCReference Include="Units\DelphiXMLDataBindingResources.pas" />
<DCCReference Include="Units\MSXML2_TLB.pas" />
<DCCReference Include="Units\XMLDataBindingGenerator.pas" />
<DCCReference Include="Units\XMLDataBindingHelpers.pas" />
</ItemGroup>
</Project>

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.x2software.net/xsd/databinding/DataBindingHints.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.x2software.net/xsd/databinding/DataBindingHints.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified">
<!-- edited with XML Spy v4.3 U (http://www.xmlspy.com) by J.A. Goos (Uname IT we build it) -->
<xs:schema targetNamespace="http://www.x2software.net/xsd/databinding/DataBindingHints.xsd" xmlns:tns="http://www.x2software.net/xsd/databinding/DataBindingHints.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="DataBindingHints">
<xs:annotation>
<xs:documentation>Contains hints and mappings for the data binding output</xs:documentation>
@ -51,7 +52,7 @@
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Schema" type="xs:string" use="optional"/>
<xs:attribute name="Schema" type="xs:string" use="required"/>
<xs:attribute name="XPath" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
@ -60,6 +61,18 @@
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Properties" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="PropertyName" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="Schema" type="xs:string" use="required"/>
<xs:attribute name="XPath" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>