I was trying to read the xml data from input xml, but I am getting empty result in the xml, I am not able to understand where I did mistake and any issue with input xml. The main goal is to change the data of the Organisation information in this, but for the first step itself I am not able to read the data in the xml
Input:
<?xml version="1.0" encoding="utf-8"?>
<entities xmlns="http://schemas.ockhm.com/api/1/">
<record source="system" key="53071236" revision="1234" status="valid" type="person">
<member>
<source>L002</source>
<key>442</key>
</member>
<member>
<source>L002</source>
<key>027</key>
</member>
<member>
<source>L002</source>
<key>071</key>
</member>
<member>
<source>L002</source>
<key>0930</key>
</member>
<person status="valid">
<gender>male</gender>
<form_of_address>Mr.</form_of_address>
<qualification_preceding>Dr.</qualification_preceding>
<given_names_full>john</given_names_full>
<surname_first>test</surname_first>
<origin>
<source>L002</source>
<key>442</key>
</origin>
<origin>
<source>L002</source>
<key>027</key>
</origin>
<origin>
<source>L002</source>
<key>0071</key>
</origin>
<origin>
<source>L002</source>
<key>0930</key>
</origin>
</person>
<organization status="valid">
<name>Test college</name>
<department>test one Institute</department>
<origin>
<source>L002</source>
<key>027</key>
</origin>
<origin>
<source>L002</source>
<key>442</key>
</origin>
<origin>
<source>L002</source>
<key>0930</key>
</origin>
</organization>
<organization status="valid">
<name>Test king INST.</name>
<department>PHARMA</department>
<origin>
<source>L002</source>
<key>132</key>
</origin>
</organization>
<alias status="valid">
<alias7>732</alias7>
<origin>
<source>L002</source>
<key>9442</key>
</origin>
</alias>
<alias status="valid">
<alias7>33</alias7>
<origin>
<source>L002</source>
<key>027</key>
</origin>
</alias>
<create_user status="valid">
<create_user>572</create_user>
<origin>
<source>L002</source>
<key>027</key>
</origin>
<origin>
<source>L002</source>
<key>071</key>
</origin>
<origin>
<source>L002</source>
<key>930</key>
</origin>
</create_user>
<bp_type status="valid">
<bp_type>customers</bp_type>
<origin>
<source>CRM</source>
<key>10082</key>
</origin>
<origin>
<source>CRM</source>
<key>93</key>
</origin>
</bp_type>
<bp_type status="valid">
<bp_type>teachers</bp_type>
<origin>
<source>CRM</source>
<key>6128</key>
</origin>
<origin>
<source>CRM</source>
<key>775</key>
</origin>
<origin>
<source>CRM</source>
<key>029</key>
</origin>
</bp_type>
<head_of_account status="valid">
<head_of_account>P</head_of_account>
<origin>
<source>CRM</source>
<key>451</key>
</origin>
</head_of_account>
<head_of_account status="valid">
<head_of_account>D</head_of_account>
<origin>
<source>CRM</source>
<key>128</key>
</origin>
<origin>
<source>CRM</source>
<key>775</key>
</origin>
<origin>
<source>CRM</source>
<key>029</key>
</origin>
</head_of_account>
<postal_address status="valid">
<type>XXDEFAULT</type>
<str>xx street</str>
<hno>8</hno>
<zip>zip1234</zip>
<city>city123</city>
<country_code>gh</country_code>
<zip_add_on>1P</zip_add_on>
<origin>
<source>L002</source>
<key>071</key>
</origin>
<origin>
<source>L002</source>
<key>764</key>
</origin>
</postal_address>
<email_address status="valid">
<type>work</type>
<address>jp address</address>
<origin>
<source>CRM</source>
<key>128</key>
<id>655</id>
</origin>
</email_address>
<external_numbers status="valid">
<type>ZGRID</type>
<external_number>1234</external_number>
<origin>
<source>CRM</source>
<key>128</key>
</origin>
</external_numbers>
</record>
</entities>
XLST code:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:ns1="http://sap.com/xi/XI/SplitAndMerge" xmlns="http://schemas.ockhm.com/api/1/">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:element name="ns1:Messages">
<xsl:element name="ns1:Message1">
<xsl:element name="record">
<xsl:for-each select="/record/member">
<xsl:apply-templates/>
</xsl:for-each>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Result coming :
<?xml version="1.0" encoding="UTF-8"?>
<ns1:Messages xmlns:ns1="http://sap.com/xi/XI/SplitAndMerge">
<ns1:Message1>
<record xmlns="http://schemas.ockhm.com/api/1/"/>
</ns1:Message1>
</ns1:Messages>
Expected result:
<?xml version="1.0" encoding="UTF-8"?>
<ns1:Messages xmlns:ns1="http://sap.com/xi/XI/SplitAndMerge">
<ns1:Message1>
<record xmlns="http://schemas.ockhm.com/api/1/">
<member>
<source>L002</source>
<key>0000969442</key>
</member>
<member>
<source>L002</source>
<key>0000280027</key>
</member>
<member>
<source>L002</source>
<key>0000910071</key>
</member>
<member>
<source>L002</source>
<key>0000770930</key>
</member>
<member>
<source>L002</source>
<key>0000770764</key>
</member>
<member>
<source>SAP-CRM</source>
<key>3000828451</key>
</member>
<member>
<source>SAP-CRM</source>
<key>3000006128</key>
</member>
<member>
<source>SAP-CRM</source>
<key>3001239775</key>
</member>
<member>
<source>L002</source>
<key>0000967132</key>
</member>
<member>
<source>SAP-CRM</source>
<key>3001836593</key>
</member>
<member>
<source>SAP-CRM</source>
<key>3001365029</key>
</member>
</record>
</ns1:Message1>
</ns1:Messages>
Can anyone please let me know where is the mistake happened.
Before delving into XSLT I would suggest to take an XPath tutorial, if you have an input document where the root element is named entities
then a path beginning with /record
will never select anything as it looks for a root element named record
.
Depending on your XSLT version you also need to take the default namespace xmlns="http://schemas.ockhm.com/api/1/"
in the XML into account, if you really have an XSLT 2 processor the easiest is to declare xpath-default-namespace="http://schemas.ockhm.com/api/1/"
on your stylesheet's root element.
That way a path like //record
will select any record
elements in that namespace.