1

I have written a Scribe Insight job, which transfers data from Sage ERP MAS to XML file. It runs successfully. Now, one more requirement got added to the job.

My current XML file looks like:

<?xml version="1.0" encoding="UTF-8"?>

<Entries>

<Organization MemberName="00-1234567" Comments="XYZ " FullName="XYZ  Name" OrgIdType="XYZ Type">

    <RelatedTo RelationType="PART_OF">

        <Group MemberName="00-1234567"/>

    </RelatedTo>

    <MemberInfo DynamicEntryType="CustomerInfo" InfoType="CustomerInfo.Independent" InternalSOR="FALSE" PaymentMethod="Credit"/>

    <MemberStatus StatusEnumValue="ACTIVE" EffectiveStartDate="2000-01-01" EffectiveEndDate="4700-12-31"/>

    <Address ImportAction="addModify" AddrType="SHIP_TO" AddrLine1="1234 Main Street" AddrLine2="" AddrCity="XYZ  City" AddrState="NY" AddrZip="11111" AddrCountry="US" AddrFlags="PRIMARY_ADDRESS"/>

    <AssociatedToOrg Name="Default"/>

    <OrganizationId ImportAction="addModify" Type="GLN" Identifier="" Primary="false" StartDate="2000-01-01"/>

</Organization>

<Organization MemberName="00-1234568" Comments=" " FullName="ABC Name" OrgIdType="ABC Type">

    <RelatedTo RelationType="PART_OF">

        <Group MemberName="00-1234568"/>

    </RelatedTo>

    <MemberInfo DynamicEntryType="CustomerInfo" InfoType="CustomerInfo.Independent" InternalSOR="FALSE" PaymentMethod="Credit"/>

    <MemberStatus StatusEnumValue="ACTIVE" EffectiveStartDate="2000-01-01" EffectiveEndDate="4700-12-31"/>

    <Address ImportAction="addModify" AddrType="SHIP_TO" AddrLine1="10 Main St" AddrLine2="" AddrCity="ABC City" AddrState="NY" AddrZip="11111" AddrCountry="US" AddrFlags="PRIMARY_ADDRESS"/>

    <AssociatedToOrg Name="Default"/>

    <OrganizationId ImportAction="addModify" Type="GLN" Identifier="1234567890123" Primary="false" StartDate="2000-01-01"/>

</Organization>

</Entries> 

Now, if you notice the first <Organization> node properly, you will find out that Identifier="" in <OrganizationId> element, whereas in second node, Identifier attribute (in <OrganizationId> element) has 13-digit numeric value.

So, as per the new requirement, if Identifier has any value other than 13-digit numeric value, then do not include <OrganizationId> element in that node.

Now, how can I remove (at the time of creation of XML or after creating XML) the <OrganizationId> element, if Identifier has any value other than 13-digit numeric value?

My currrent XSD is:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Entries">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Organization" maxOccurs="unbounded" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="RelatedTo">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="Group">
                                        <xs:complexType>
                                            <xs:simpleContent>
                                                <xs:extension base="xs:string">
                                                    <xs:attribute type="xs:string" name="MemberName" use="optional"/>
                                                </xs:extension>
                                            </xs:simpleContent>
                                        </xs:complexType>
                                    </xs:element>
                                </xs:sequence>
                                <xs:attribute type="xs:string" name="RelationType" use="optional"/>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="MemberInfo">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="xs:string">
                                        <xs:attribute type="xs:string" name="DynamicEntryType" use="optional"/>
                                        <xs:attribute type="xs:string" name="InfoType" use="optional"/>
                                        <xs:attribute type="xs:string" name="InternalSOR" use="optional"/>
                                        <xs:attribute type="xs:string" name="PaymentMethod" use="optional"/>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="MemberStatus">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="xs:string">
                                        <xs:attribute type="xs:string" name="StatusEnumValue" use="optional"/>
                                        <xs:attribute type="xs:date" name="EffectiveStartDate" use="optional"/>
                                        <xs:attribute type="xs:date" name="EffectiveEndDate" use="optional"/>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="Address">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="xs:string">
                                        <xs:attribute type="xs:string" name="ImportAction" use="optional"/>
                                        <xs:attribute type="xs:string" name="AddrType" use="optional"/>
                                        <xs:attribute type="xs:string" name="AddrLine1" use="optional"/>
                                        <xs:attribute type="xs:string" name="AddrLine2" use="optional"/>
                                        <xs:attribute type="xs:string" name="AddrCity" use="optional"/>
                                        <xs:attribute type="xs:string" name="AddrState" use="optional"/>
                                        <xs:attribute type="xs:string" name="AddrZip" use="optional"/>
                                        <xs:attribute type="xs:string" name="AddrCountry" use="optional"/>
                                        <xs:attribute type="xs:string" name="AddrFlags" use="optional"/>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="AssociatedToOrg">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="xs:string">
                                        <xs:attribute type="xs:string" name="Name" use="optional"/>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="OrganizationId">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="xs:string">
                                        <xs:attribute type="xs:string" name="ImportAction" use="optional"/>
                                        <xs:attribute type="xs:string" name="Type" use="optional"/>
                                        <xs:attribute name="Identifier">
                                            <xs:simpleType>
                                                <xs:restriction base="xs:integer">
                                                    <xs:pattern value="[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"/>
                                                </xs:restriction>
                                            </xs:simpleType>
                                        </xs:attribute>
                                        <xs:attribute type="xs:string" name="Primary" use="optional"/>
                                        <xs:attribute type="xs:date" name="StartDate" use="optional"/>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                    <xs:attribute type="xs:string" name="MemberName" use="optional"/>
                    <xs:attribute type="xs:string" name="Comments" use="optional"/>
                    <xs:attribute type="xs:string" name="FullName" use="optional"/>
                    <xs:attribute type="xs:string" name="OrgIdType" use="optional"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

Vikram
  • 3,996
  • 8
  • 37
  • 58

0 Answers0