I am trying to generate a XML from another XML based on some defined XPATH.
XPATH:
country/name,
country/org_id,
country/lang,
country/currency,
generate_date,
schedule/category/id,
schedule/category/name,
schedule/category/classes/class/id,
schedule/category/classes/class/duration,
schedule/category/classes/class/price,
schedule/category/classes/class/instruction_language
Xpath is excluding the name of root node and it is a list.
XML:
<?xml version="1.0" encoding="utf-8" ?>
<ou_schedule>
<country>
<name>Country Name</name>
<org_id>Org ID</org_id>
<lang>language</lang>
<currency>Currency</currency>
</country>
<generate_date>Date</generate_date>
<schedule>
<category>
<id>cat id</id>
<name>Cat name</name>
<classes>
<class>
<id>class id</id>
<duration>class duration</duration>
<price>price</price>
<instruction_language>Test Data</instruction_language>
</class>
<class>
<id>class id</id>
<duration>class duration</duration>
<price>price</price>
<instruction_language>Test Data</instruction_language>
</class>
</classes>
</category>
</schedule>
</ou_schedule>
Output:
<?xml version="1.0" encoding="utf-8"?>
<ou_schedule>
<country.name>country name</country.name>
<country.org_id>org id</country.org_id>
<country.lang>language</country.lang>
<country.currency>currency</country.currency>
<generate_date>date</generate_date>
<schedule.category.name>Cat Name</schedule.category.name>
<schedule.category.id>Cat ID</schedule.category.id>
<schedule.category.classes.class.id>class id</schedule.category.classes.class.id>
<schedule.category.classes.class.duration>class duration</schedule.category.classes.class.duration>
<schedule.category.classes.class.price>price</schedule.category.classes.class.price>
<schedule.category.classes.class.instruction_language>Test Data</schedule.category.classes.class.instruction_language>
<country.name>country name</country.name>
<country.org_id>org id</country.org_id>
<country.lang>language</country.lang>
<country.currency>currency</country.currency>
<generate_date>date</generate_date>
<schedule.category.name>Cat Name</schedule.category.name>
<schedule.category.id>Cat ID</schedule.category.id>
<schedule.category.classes.class.id>class id</schedule.category.classes.class.id>
<schedule.category.classes.class.duration>class duration</schedule.category.classes.class.duration>
<schedule.category.classes.class.price>price</schedule.category.classes.class.price>
<schedule.category.classes.class.instruction_language>Test Data</schedule.category.classes.class.instruction_language>
</ou_schedule>
Here, to remove ambiguity I am naming the nodes names with their ancestors except root node i.e., same as XPATH but replacing /
with .
.
Is it possible to achieve this using some generic XSLT
?