Table 9610 XML Schema Element, source in 29
Source29
src/Layers/W1/BaseApp/System/XML/XMLSchemaElement.Table.al179 lines, Copyright (c) Microsoft Corporation. MIT
namespace System.Xml;
table 9610 "XML Schema Element"
{
Caption = 'XML Schema Element';
DataClassification = CustomerContent;
fields
{
field(1; "XML Schema Code"; Code[20])
{
Caption = 'XML Schema Code';
TableRelation = "XML Schema";
}
field(2; ID; Integer)
{
Caption = 'ID';
}
field(3; "Parent ID"; Integer)
{
Caption = 'Parent ID';
}
field(4; "Node Name"; Text[250])
{
Caption = 'Node Name';
}
field(5; "Node Type"; Option)
{
Caption = 'Node Type';
OptionCaption = 'Element,Attribute,Definition Node';
OptionMembers = Element,Attribute,"Definition Node";
}
field(6; "Data Type"; Text[250])
{
Caption = 'Data Type';
}
field(7; MinOccurs; Integer)
{
Caption = 'MinOccurs';
}
field(8; MaxOccurs; Integer)
{
Caption = 'MaxOccurs';
}
field(9; Choice; Boolean)
{
Caption = 'Choice';
}
field(20; "Sort Key"; Text[200])
{
Caption = 'Sort Key';
}
field(21; Indentation; Integer)
{
Caption = 'Indentation';
}
field(22; Visible; Boolean)
{
Caption = 'Visible';
InitValue = true;
}
field(23; Selected; Boolean)
{
Caption = 'Selected';
trigger OnValidate()
var
XSDParser: Codeunit "XSD Parser";
xID: Integer;
begin
xID := ID;
Modify();
if Selected then begin
XSDParser.ExtendSelectedElement(Rec);
while Indentation > 0 do begin
Get("XML Schema Code", "Parent ID");
if not Selected then begin
Selected := true;
Modify();
end;
end;
Get("XML Schema Code", xID);
SelectMandatoryNodes();
end;
end;
}
field(24; "Simple Data Type"; Text[50])
{
Caption = 'Simple Data Type';
Editable = false;
trigger OnValidate()
var
NamespaceLength: Integer;
begin
NamespaceLength := StrPos("Simple Data Type", ':');
if NamespaceLength > 0 then
"Simple Data Type" := CopyStr("Simple Data Type", NamespaceLength + 1);
end;
}
field(25; "Defintion XML Schema Code"; Code[20])
{
Caption = 'Defintion XML Schema Code';
}
field(26; "Definition XML Schema ID"; Integer)
{
Caption = 'Definition XML Schema ID';
}
}
keys
{
key(Key1; "XML Schema Code", ID)
{
Clustered = true;
}
key(Key2; "Parent ID", "XML Schema Code")
{
}
key(Key3; "XML Schema Code", "Sort Key")
{
}
key(Key4; "Node Name", "XML Schema Code")
{
}
key(Key5; "Data Type", "XML Schema Code")
{
}
}
fieldgroups
{
}
procedure IsLeaf(): Boolean
var
ChildXMLSchemaElement: Record "XML Schema Element";
begin
ChildXMLSchemaElement.SetRange("XML Schema Code", "XML Schema Code");
ChildXMLSchemaElement.SetRange("Parent ID", ID);
ChildXMLSchemaElement.SetRange("Node Type", "Node Type"::Element);
exit(ChildXMLSchemaElement.IsEmpty);
end;
procedure GetFullPath(): Text
var
ParentXMLSchemaElement: Record "XML Schema Element";
Prefix: Text;
Suffix: Text;
begin
Prefix := '/';
if "Node Type" = "Node Type"::Attribute then begin
Prefix := '[@';
Suffix := ']'
end;
if ParentXMLSchemaElement.Get("XML Schema Code", "Parent ID") then
exit(ParentXMLSchemaElement.GetFullPath() + Prefix + "Node Name" + Suffix);
exit(Prefix + "Node Name" + Suffix);
end;
procedure SelectMandatoryNodes()
var
XMLSchemaElement: Record "XML Schema Element";
begin
XMLSchemaElement.SetRange("XML Schema Code", "XML Schema Code");
XMLSchemaElement.SetRange("Parent ID", ID);
if XMLSchemaElement.FindSet() then
repeat
XMLSchemaElement.Selected := XMLSchemaElement.Selected or (XMLSchemaElement.MinOccurs > 0);
XMLSchemaElement.Modify();
XMLSchemaElement.SelectMandatoryNodes();
until XMLSchemaElement.Next() = 0;
end;
}