1
0
mirror of synced 2024-11-23 14:13:49 +00:00

XML Validation: CreateRequiredElements with correct namespaces

This commit is contained in:
Philipp Winkel 2020-11-03 17:11:34 +01:00
parent ede9c97346
commit 96eeb95d17
2 changed files with 10 additions and 4 deletions

View File

@ -1579,7 +1579,9 @@ var
elementSortCount: Integer; elementSortCount: Integer;
elementSortOrder: string; elementSortOrder: string;
elementRequired: string; elementRequired: string;
elementNamespaceRequired: string;
elementRequiredCount: Integer; elementRequiredCount: Integer;
elementNamespaceRequiredCount: Integer;
attributeRequired: string; attributeRequired: string;
attributeRequiredCount: Integer; attributeRequiredCount: Integer;
@ -1610,8 +1612,10 @@ begin
begin begin
case propertyItem.PropertyType of case propertyItem.PropertyType of
ptSimple: ptSimple:
AddArrayElement(elementRequired, elementRequiredCount, QuotedStr(propertyItem.Name)); begin
AddArrayElement(elementRequired, elementRequiredCount, QuotedStr(propertyItem.Name));
AddArrayElement(elementNamespaceRequired, elementNamespaceRequiredCount, QuotedStr(propertyItem.TargetNamespace));
end;
ptItem: ptItem:
{ For Item properties, we call our getter property. This ensures the child element exists, { For Item properties, we call our getter property. This ensures the child element exists,
but also that it is created using our binding implementation. Otherwise there will be no but also that it is created using our binding implementation. Otherwise there will be no
@ -1627,8 +1631,10 @@ begin
if elementRequiredCount > 0 then if elementRequiredCount > 0 then
begin begin
Delete(elementRequired, 1, 2); Delete(elementRequired, 1, 2);
Delete(elementNamespaceRequired, 1, 2);
AWriter.WriteLineNamedFmt(IfThen(AStrict, XSDValidateStrictMethodImplementationRequired, XSDValidateMethodImplementationRequired), AWriter.WriteLineNamedFmt(IfThen(AStrict, XSDValidateStrictMethodImplementationRequired, XSDValidateMethodImplementationRequired),
['RequiredElements', elementRequired]); ['RequiredElements', elementRequired,
'RequiredElementNamespaces', elementNamespaceRequired]);
end; end;

View File

@ -114,7 +114,7 @@ const
XSDValidateMethodImplementationBegin = 'procedure TXML%<Name>:s.XSDValidate;' + CrLf + XSDValidateMethodImplementationBegin = 'procedure TXML%<Name>:s.XSDValidate;' + CrLf +
'begin'; 'begin';
XSDValidateMethodImplementationRequired = ' CreateRequiredElements(Self, [%<RequiredElements>:s]);'; XSDValidateMethodImplementationRequired = ' CreateRequiredElements(Self, [%<RequiredElements>:s], [%<RequiredElementNamespaces>:s]);';
XSDValidateMethodImplementationComplex = ' Get%<Name>:s;'; XSDValidateMethodImplementationComplex = ' Get%<Name>:s;';
XSDValidateMethodImplementationAttrib = ' CreateRequiredAttributes(Self, [%<RequiredAttributes>:s]);'; XSDValidateMethodImplementationAttrib = ' CreateRequiredAttributes(Self, [%<RequiredAttributes>:s]);';
XSDValidateMethodImplementationSort = ' SortChildNodes(Self, [%<SortOrder>:s]);'; XSDValidateMethodImplementationSort = ' SortChildNodes(Self, [%<SortOrder>:s]);';