{ X2Software XML Data Binding Generated on: 22/04/2020 11:59:03 Generated from: P:\x2xmldatabinding\XSD\DataBindingHints.xsd } unit DataBindingHintsXML; interface uses Classes, SysUtils, XMLDoc, XMLIntf, XMLDataBindingUtils; type { Forward declarations for DataBindingHints } IXMLDataBindingHints = interface; IXMLEnumerations = interface; IXMLEnumeration = interface; IXMLMember = interface; IXMLDocumentElements = interface; 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) ['{8122E348-4BE1-4436-AD2A-DAFED0CFA0C4}'] procedure XSDValidateDocument(AStrict: Boolean = False); 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; property HasDocumentElements: Boolean read GetHasDocumentElements; 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; IXMLEnumerationsEnumerator = interface ['{725760E4-70A5-47A6-B91B-C240F1FADA60}'] function GetCurrent: IXMLEnumeration; function MoveNext: Boolean; property Current: IXMLEnumeration read GetCurrent; end; IXMLEnumerations = interface(IXMLNodeCollection) ['{509EAF84-A4BF-4F15-B77C-98B58792A9C3}'] function GetEnumerator: IXMLEnumerationsEnumerator; function Get_Enumeration(Index: Integer): IXMLEnumeration; function Add: IXMLEnumeration; function Insert(Index: Integer): IXMLEnumeration; property Enumeration[Index: Integer]: IXMLEnumeration read Get_Enumeration; default; end; IXMLEnumerationEnumerator = interface ['{8A1AF158-2AF3-49FB-9CFC-46897D8AF28C}'] function GetCurrent: IXMLMember; function MoveNext: Boolean; property Current: IXMLMember read GetCurrent; end; IXMLEnumeration = interface(IXMLNodeCollection) ['{01A5E078-6EEB-40A0-BF72-972B467AD983}'] procedure XSDValidate; procedure XSDValidateStrict(AResult: IXSDValidateStrictResult); function GetEnumerator: IXMLEnumerationEnumerator; function Get_Member(Index: Integer): IXMLMember; function Add: IXMLMember; function Insert(Index: Integer): IXMLMember; property Member[Index: Integer]: IXMLMember read Get_Member; default; function GetSchema: WideString; function GetXPath: WideString; function GetHasReplaceMembers: Boolean; function GetReplaceMembers: Boolean; procedure SetSchema(const Value: WideString); procedure SetXPath(const Value: WideString); procedure SetReplaceMembers(const Value: Boolean); property Schema: WideString read GetSchema write SetSchema; property XPath: WideString read GetXPath write SetXPath; property HasReplaceMembers: Boolean read GetHasReplaceMembers; property ReplaceMembers: Boolean read GetReplaceMembers write SetReplaceMembers; end; IXMLMember = interface(IXMLNode) ['{C58EF7F8-E182-47A3-B591-550A51AA0751}'] procedure XSDValidate; procedure XSDValidateStrict(AResult: IXSDValidateStrictResult); function GetName: WideString; function GetValue: WideString; procedure SetName(const Value: WideString); procedure SetValue(const Value: WideString); property Name: WideString read GetName write SetName; property Value: WideString read GetValue write SetValue; end; IXMLDocumentElementsEnumerator = interface ['{D58F3363-3E98-4EF9-9A9E-F57B7C4639D7}'] function GetCurrent: IXMLDocumentElement; function MoveNext: Boolean; property Current: IXMLDocumentElement read GetCurrent; end; { If present, only elements which are included in this list will be marked as a Document Element. } IXMLDocumentElements = interface(IXMLNodeCollection) ['{D991E86F-3D42-4B05-BB90-10AF42324FE1}'] function GetEnumerator: IXMLDocumentElementsEnumerator; function Get_DocumentElement(Index: Integer): IXMLDocumentElement; function Add: IXMLDocumentElement; function Insert(Index: Integer): IXMLDocumentElement; property DocumentElement[Index: Integer]: IXMLDocumentElement read Get_DocumentElement; default; end; IXMLDocumentElement = interface(IXMLNode) ['{0FD90406-67B2-4076-870C-47DA8E8582ED}'] procedure XSDValidate; procedure XSDValidateStrict(AResult: IXSDValidateStrictResult); 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; IXMLInterfacesEnumerator = interface ['{A1433E41-A316-4DBD-ADC2-7EA490CEFCB3}'] function GetCurrent: IXMLInterfaceName; function MoveNext: Boolean; property Current: IXMLInterfaceName read GetCurrent; end; IXMLInterfaces = interface(IXMLNodeCollection) ['{6A2EDBB5-36FE-4CA6-B3B9-1AC7A016E372}'] function GetEnumerator: IXMLInterfacesEnumerator; function Get_InterfaceName(Index: Integer): IXMLInterfaceName; function Add: IXMLInterfaceName; function Insert(Index: Integer): IXMLInterfaceName; property InterfaceName[Index: Integer]: IXMLInterfaceName read Get_InterfaceName; default; end; IXMLInterfaceName = interface(IXMLNode) ['{F0057FA9-92D8-47C5-AC29-6A045595B7F0}'] procedure XSDValidate; procedure XSDValidateStrict(AResult: IXSDValidateStrictResult); function GetSchema: WideString; function GetXPath: WideString; function GetValue: WideString; procedure SetSchema(const Value: WideString); procedure SetXPath(const Value: WideString); procedure SetValue(const Value: WideString); property Schema: WideString read GetSchema write SetSchema; property XPath: WideString read GetXPath write SetXPath; property Value: WideString read GetValue write SetValue; end; IXMLPropertiesEnumerator = interface ['{4FDE9618-2177-4D53-8B14-5E81E397E084}'] function GetCurrent: IXMLPropertyName; function MoveNext: Boolean; property Current: IXMLPropertyName read GetCurrent; end; IXMLProperties = interface(IXMLNodeCollection) ['{38320F29-9D8C-4158-B0F6-8E1D1FD31EB9}'] function GetEnumerator: IXMLPropertiesEnumerator; 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) ['{F99D3125-B2DE-4A4A-88D0-DBCB50C75C59}'] procedure XSDValidate; procedure XSDValidateStrict(AResult: IXSDValidateStrictResult); 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; { Classes for DataBindingHints } TXMLDataBindingHints = class(TX2XMLNode, IXMLDataBindingHints) public procedure AfterConstruction; override; protected procedure XSDValidateDocument(AStrict: Boolean = False); function GetHasEnumerations: Boolean; function GetEnumerations: IXMLEnumerations; function GetHasDocumentElements: Boolean; function GetDocumentElements: IXMLDocumentElements; function GetHasInterfaces: Boolean; function GetInterfaces: IXMLInterfaces; function GetHasProperties: Boolean; function GetProperties: IXMLProperties; end; TXMLEnumerationsEnumerator = class(TXMLNodeCollectionEnumerator, IXMLEnumerationsEnumerator) protected function GetCurrent: IXMLEnumeration; end; TXMLEnumerations = class(TX2XMLNodeCollection, IXMLEnumerations) public procedure AfterConstruction; override; protected function GetEnumerator: IXMLEnumerationsEnumerator; function Get_Enumeration(Index: Integer): IXMLEnumeration; function Add: IXMLEnumeration; function Insert(Index: Integer): IXMLEnumeration; end; TXMLEnumerationEnumerator = class(TXMLNodeCollectionEnumerator, IXMLEnumerationEnumerator) protected function GetCurrent: IXMLMember; end; TXMLEnumeration = class(TX2XMLNodeCollection, IXSDValidate, IXSDValidateStrict, IXMLEnumeration) public procedure AfterConstruction; override; protected procedure XSDValidate; procedure XSDValidateStrict(AResult: IXSDValidateStrictResult); function GetEnumerator: IXMLEnumerationEnumerator; function Get_Member(Index: Integer): IXMLMember; function Add: IXMLMember; function Insert(Index: Integer): IXMLMember; function GetSchema: WideString; function GetXPath: WideString; function GetHasReplaceMembers: Boolean; function GetReplaceMembers: Boolean; procedure SetSchema(const Value: WideString); procedure SetXPath(const Value: WideString); procedure SetReplaceMembers(const Value: Boolean); end; TXMLMember = class(TX2XMLNode, IXSDValidate, IXSDValidateStrict, IXMLMember) protected procedure XSDValidate; procedure XSDValidateStrict(AResult: IXSDValidateStrictResult); function GetName: WideString; function GetValue: WideString; procedure SetName(const Value: WideString); procedure SetValue(const Value: WideString); end; TXMLDocumentElementsEnumerator = class(TXMLNodeCollectionEnumerator, IXMLDocumentElementsEnumerator) protected function GetCurrent: IXMLDocumentElement; end; TXMLDocumentElements = class(TX2XMLNodeCollection, IXMLDocumentElements) public procedure AfterConstruction; override; protected function GetEnumerator: IXMLDocumentElementsEnumerator; function Get_DocumentElement(Index: Integer): IXMLDocumentElement; function Add: IXMLDocumentElement; function Insert(Index: Integer): IXMLDocumentElement; end; TXMLDocumentElement = class(TX2XMLNode, IXSDValidate, IXSDValidateStrict, IXMLDocumentElement) protected procedure XSDValidate; procedure XSDValidateStrict(AResult: IXSDValidateStrictResult); function GetSchema: WideString; function GetXPath: WideString; procedure SetSchema(const Value: WideString); procedure SetXPath(const Value: WideString); end; TXMLInterfacesEnumerator = class(TXMLNodeCollectionEnumerator, IXMLInterfacesEnumerator) protected function GetCurrent: IXMLInterfaceName; end; TXMLInterfaces = class(TX2XMLNodeCollection, IXMLInterfaces) public procedure AfterConstruction; override; protected function GetEnumerator: IXMLInterfacesEnumerator; function Get_InterfaceName(Index: Integer): IXMLInterfaceName; function Add: IXMLInterfaceName; function Insert(Index: Integer): IXMLInterfaceName; end; TXMLInterfaceName = class(TX2XMLNode, IXSDValidate, IXSDValidateStrict, IXMLInterfaceName) protected procedure XSDValidate; procedure XSDValidateStrict(AResult: IXSDValidateStrictResult); function GetSchema: WideString; function GetXPath: WideString; function GetValue: WideString; procedure SetSchema(const Value: WideString); procedure SetXPath(const Value: WideString); procedure SetValue(const Value: WideString); end; TXMLPropertiesEnumerator = class(TXMLNodeCollectionEnumerator, IXMLPropertiesEnumerator) protected function GetCurrent: IXMLPropertyName; end; TXMLProperties = class(TX2XMLNodeCollection, IXMLProperties) public procedure AfterConstruction; override; protected function GetEnumerator: IXMLPropertiesEnumerator; function Get_PropertyName(Index: Integer): IXMLPropertyName; function Add: IXMLPropertyName; function Insert(Index: Integer): IXMLPropertyName; end; TXMLPropertyName = class(TX2XMLNode, IXSDValidate, IXSDValidateStrict, IXMLPropertyName) protected procedure XSDValidate; procedure XSDValidateStrict(AResult: IXSDValidateStrictResult); function GetSchema: WideString; function GetXPath: WideString; procedure SetSchema(const Value: WideString); procedure SetXPath(const Value: WideString); end; { Document functions } function GetDataBindingHints(ADocument: XMLIntf.IXMLDocument): IXMLDataBindingHints; function LoadDataBindingHints(const AFileName: String): IXMLDataBindingHints; function LoadDataBindingHintsFromStream(AStream: TStream): IXMLDataBindingHints; function LoadDataBindingHintsFromString(const AString: String{$IF CompilerVersion >= 20}; AEncoding: TEncoding = nil; AOwnsEncoding: Boolean = True{$IFEND}): IXMLDataBindingHints; function NewDataBindingHints: IXMLDataBindingHints; const TargetNamespace = 'http://www.x2software.net/xsd/databinding/DataBindingHints.xsd'; implementation uses Variants; { Document functions } function GetDataBindingHints(ADocument: XMLIntf.IXMLDocument): IXMLDataBindingHints; begin Result := ADocument.GetDocBinding('DataBindingHints', TXMLDataBindingHints, TargetNamespace) as IXMLDataBindingHints end; function LoadDataBindingHints(const AFileName: String): IXMLDataBindingHints; begin Result := LoadXMLDocument(AFileName).GetDocBinding('DataBindingHints', TXMLDataBindingHints, TargetNamespace) as IXMLDataBindingHints end; function LoadDataBindingHintsFromStream(AStream: TStream): IXMLDataBindingHints; var doc: XMLIntf.IXMLDocument; begin doc := NewXMLDocument; doc.LoadFromStream(AStream); Result := GetDataBindingHints(doc); end; function LoadDataBindingHintsFromString(const AString: String{$IF CompilerVersion >= 20}; AEncoding: TEncoding; AOwnsEncoding: Boolean{$IFEND}): IXMLDataBindingHints; var stream: TStringStream; begin {$IF CompilerVersion >= 20} if Assigned(AEncoding) then stream := TStringStream.Create(AString, AEncoding, AOwnsEncoding) else {$IFEND} stream := TStringStream.Create(AString); try Result := LoadDataBindingHintsFromStream(stream); finally FreeAndNil(stream); end; end; function NewDataBindingHints: IXMLDataBindingHints; begin Result := NewXMLDocument.GetDocBinding('DataBindingHints', TXMLDataBindingHints, TargetNamespace) as IXMLDataBindingHints end; { Implementation for DataBindingHints } procedure TXMLDataBindingHints.AfterConstruction; begin RegisterChildNode('Enumerations', TXMLEnumerations); RegisterChildNode('DocumentElements', TXMLDocumentElements); RegisterChildNode('Interfaces', TXMLInterfaces); RegisterChildNode('Properties', TXMLProperties); inherited; end; procedure TXMLDataBindingHints.XSDValidateDocument(AStrict: Boolean); begin if AStrict then XMLDataBindingUtils.XSDValidateStrict(Self) else XMLDataBindingUtils.XSDValidate(Self); end; function TXMLDataBindingHints.GetHasEnumerations: Boolean; begin Result := Assigned(ChildNodes.FindNode('Enumerations')); end; function TXMLDataBindingHints.GetEnumerations: IXMLEnumerations; begin Result := (ChildNodes['Enumerations'] as IXMLEnumerations); end; function TXMLDataBindingHints.GetHasDocumentElements: Boolean; begin Result := Assigned(ChildNodes.FindNode('DocumentElements')); end; function TXMLDataBindingHints.GetDocumentElements: IXMLDocumentElements; begin Result := (ChildNodes['DocumentElements'] as IXMLDocumentElements); end; function TXMLDataBindingHints.GetHasInterfaces: Boolean; begin Result := Assigned(ChildNodes.FindNode('Interfaces')); end; function TXMLDataBindingHints.GetInterfaces: IXMLInterfaces; 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; function TXMLEnumerationsEnumerator.GetCurrent: IXMLEnumeration; begin Result := (inherited GetCurrent as IXMLEnumeration); end; procedure TXMLEnumerations.AfterConstruction; begin RegisterChildNode('Enumeration', TXMLEnumeration); ItemTag := 'Enumeration'; ItemInterface := IXMLEnumeration; inherited; end; function TXMLEnumerations.GetEnumerator: IXMLEnumerationsEnumerator; begin Result := TXMLEnumerationsEnumerator.Create(Self); end; function TXMLEnumerations.Get_Enumeration(Index: Integer): IXMLEnumeration; begin Result := (List[Index] as IXMLEnumeration); end; function TXMLEnumerations.Add: IXMLEnumeration; begin Result := (AddItem(-1) as IXMLEnumeration); end; function TXMLEnumerations.Insert(Index: Integer): IXMLEnumeration; begin Result := (AddItem(Index) as IXMLEnumeration); end; function TXMLEnumerationEnumerator.GetCurrent: IXMLMember; begin Result := (inherited GetCurrent as IXMLMember); end; procedure TXMLEnumeration.AfterConstruction; begin RegisterChildNode('Member', TXMLMember); ItemTag := 'Member'; ItemInterface := IXMLMember; inherited; end; procedure TXMLEnumeration.XSDValidate; begin CreateRequiredAttributes(Self, ['Schema', 'XPath']); end; procedure TXMLEnumeration.XSDValidateStrict(AResult: IXSDValidateStrictResult); begin ValidateRequiredAttributes(AResult, Self, ['Schema', 'XPath']); end; function TXMLEnumeration.GetEnumerator: IXMLEnumerationEnumerator; begin Result := TXMLEnumerationEnumerator.Create(Self); end; function TXMLEnumeration.Get_Member(Index: Integer): IXMLMember; begin Result := (List[Index] as IXMLMember); end; function TXMLEnumeration.Add: IXMLMember; begin Result := (AddItem(-1) as IXMLMember); end; function TXMLEnumeration.Insert(Index: Integer): IXMLMember; begin Result := (AddItem(Index) as IXMLMember); end; function TXMLEnumeration.GetSchema: WideString; begin Result := AttributeNodes['Schema'].Text; end; function TXMLEnumeration.GetXPath: WideString; begin Result := AttributeNodes['XPath'].Text; end; function TXMLEnumeration.GetHasReplaceMembers: Boolean; begin Result := Assigned(AttributeNodes.FindNode('ReplaceMembers')); end; function TXMLEnumeration.GetReplaceMembers: Boolean; begin Result := AttributeNodes['ReplaceMembers'].NodeValue; end; procedure TXMLEnumeration.SetSchema(const Value: WideString); begin SetAttribute('Schema', GetValidXMLText(Value)); end; procedure TXMLEnumeration.SetXPath(const Value: WideString); begin SetAttribute('XPath', GetValidXMLText(Value)); end; procedure TXMLEnumeration.SetReplaceMembers(const Value: Boolean); begin SetAttribute('ReplaceMembers', BoolToXML(Value)); end; procedure TXMLMember.XSDValidate; begin CreateRequiredAttributes(Self, ['Name']); end; procedure TXMLMember.XSDValidateStrict(AResult: IXSDValidateStrictResult); begin ValidateRequiredAttributes(AResult, Self, ['Name']); end; function TXMLMember.GetName: WideString; begin Result := AttributeNodes['Name'].Text; end; function TXMLMember.GetValue: WideString; begin Result := VarToStr(GetNodeValue); end; procedure TXMLMember.SetName(const Value: WideString); begin SetAttribute('Name', GetValidXMLText(Value)); end; procedure TXMLMember.SetValue(const Value: WideString); begin SetNodeValue(GetValidXMLText(Value)); end; function TXMLDocumentElementsEnumerator.GetCurrent: IXMLDocumentElement; begin Result := (inherited GetCurrent as IXMLDocumentElement); end; procedure TXMLDocumentElements.AfterConstruction; begin RegisterChildNode('DocumentElement', TXMLDocumentElement); ItemTag := 'DocumentElement'; ItemInterface := IXMLDocumentElement; inherited; end; function TXMLDocumentElements.GetEnumerator: IXMLDocumentElementsEnumerator; begin Result := TXMLDocumentElementsEnumerator.Create(Self); end; function TXMLDocumentElements.Get_DocumentElement(Index: Integer): IXMLDocumentElement; begin Result := (List[Index] as IXMLDocumentElement); end; function TXMLDocumentElements.Add: IXMLDocumentElement; begin Result := (AddItem(-1) as IXMLDocumentElement); end; function TXMLDocumentElements.Insert(Index: Integer): IXMLDocumentElement; begin Result := (AddItem(Index) as IXMLDocumentElement); end; procedure TXMLDocumentElement.XSDValidate; begin CreateRequiredAttributes(Self, ['Schema', 'XPath']); end; procedure TXMLDocumentElement.XSDValidateStrict(AResult: IXSDValidateStrictResult); begin ValidateRequiredAttributes(AResult, Self, ['Schema', 'XPath']); end; function TXMLDocumentElement.GetSchema: WideString; begin Result := AttributeNodes['Schema'].Text; end; function TXMLDocumentElement.GetXPath: WideString; begin Result := AttributeNodes['XPath'].Text; end; procedure TXMLDocumentElement.SetSchema(const Value: WideString); begin SetAttribute('Schema', GetValidXMLText(Value)); end; procedure TXMLDocumentElement.SetXPath(const Value: WideString); begin SetAttribute('XPath', GetValidXMLText(Value)); end; function TXMLInterfacesEnumerator.GetCurrent: IXMLInterfaceName; begin Result := (inherited GetCurrent as IXMLInterfaceName); end; procedure TXMLInterfaces.AfterConstruction; begin RegisterChildNode('InterfaceName', TXMLInterfaceName); ItemTag := 'InterfaceName'; ItemInterface := IXMLInterfaceName; inherited; end; function TXMLInterfaces.GetEnumerator: IXMLInterfacesEnumerator; begin Result := TXMLInterfacesEnumerator.Create(Self); end; function TXMLInterfaces.Get_InterfaceName(Index: Integer): IXMLInterfaceName; begin Result := (List[Index] as IXMLInterfaceName); end; function TXMLInterfaces.Add: IXMLInterfaceName; begin Result := (AddItem(-1) as IXMLInterfaceName); end; function TXMLInterfaces.Insert(Index: Integer): IXMLInterfaceName; begin Result := (AddItem(Index) as IXMLInterfaceName); end; procedure TXMLInterfaceName.XSDValidate; begin CreateRequiredAttributes(Self, ['Schema', 'XPath']); end; procedure TXMLInterfaceName.XSDValidateStrict(AResult: IXSDValidateStrictResult); begin ValidateRequiredAttributes(AResult, Self, ['Schema', 'XPath']); end; function TXMLInterfaceName.GetSchema: WideString; begin Result := AttributeNodes['Schema'].Text; end; function TXMLInterfaceName.GetXPath: WideString; begin Result := AttributeNodes['XPath'].Text; end; function TXMLInterfaceName.GetValue: WideString; begin Result := VarToStr(GetNodeValue); end; procedure TXMLInterfaceName.SetSchema(const Value: WideString); begin SetAttribute('Schema', GetValidXMLText(Value)); end; procedure TXMLInterfaceName.SetXPath(const Value: WideString); begin SetAttribute('XPath', GetValidXMLText(Value)); end; procedure TXMLInterfaceName.SetValue(const Value: WideString); begin SetNodeValue(GetValidXMLText(Value)); end; function TXMLPropertiesEnumerator.GetCurrent: IXMLPropertyName; begin Result := (inherited GetCurrent as IXMLPropertyName); end; procedure TXMLProperties.AfterConstruction; begin RegisterChildNode('PropertyName', TXMLPropertyName); ItemTag := 'PropertyName'; ItemInterface := IXMLPropertyName; inherited; end; function TXMLProperties.GetEnumerator: IXMLPropertiesEnumerator; begin Result := TXMLPropertiesEnumerator.Create(Self); 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; procedure TXMLPropertyName.XSDValidate; begin CreateRequiredAttributes(Self, ['Schema', 'XPath']); end; procedure TXMLPropertyName.XSDValidateStrict(AResult: IXSDValidateStrictResult); begin ValidateRequiredAttributes(AResult, Self, ['Schema', 'XPath']); 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', GetValidXMLText(Value)); end; procedure TXMLPropertyName.SetXPath(const Value: WideString); begin SetAttribute('XPath', GetValidXMLText(Value)); end; end.