Я должен преобразовать XML данные. Размер ввода XML огромен, поэтому нам нужно преобразовать его так, чтобы из него можно было получать только необходимые данные. Ненужные узлы должны быть опущены. Я разместил ниже образец структуры, которую мы получаем. Вход имеет несколько дочерних узлов, но мне нужно выбрать только дочерний узел с данными в образовательном узле. Я новичок в XSL преобразованиях. Я попытался написать несколько таблиц стилей, но ничего не получилось, как ожидалось.
Ввод XML:
<?xml version="1.0" encoding="UTF-8"?>
<parent>
<child>
<age>30</age>
<name>
<firstname>abc</firstname>
<lastname>xyz</lastname>
<middlename>v</middlename>
</name>
<education>
<graduate>Yes</graduate>
<masters>No</masters>
</education>
<dob>25-MAR-1990</dob>
<location>city123</location>
</child>
<child>
<age>29</age>
<name>
<firstname>def</firstname>
<lastname>123</lastname>
<middlename>a</middlename>
</name>
<education/>
<dob>25-MAR-1991</dob>
<location>city123</location>
</child>
<child>
<age>35</age>
<name>
<firstname>ghi</firstname>
<lastname>345</lastname>
<middlename>r</middlename>
</name>
<education>
<graduate>Yes</graduate>
<masters>Yes</masters>
</education>
<dob>25-MAR-1985</dob>
<location>city123</location>
</child>
</parent>
Ввод XML:
<parent>
<child>
<age>30</age>
<name>
<firstname>abc</firstname>
<lastname>xyz</lastname>
<middlename>v</middlename>
</name>
<education>
<graduate>Yes</graduate>
<masters>No</masters>
</education>
<dob>25-MAR-1990</dob>
<location>city123</location>
</child>
<child>
<age>35</age>
<name>
<firstname>ghi</firstname>
<lastname>345</lastname>
<middlename>r</middlename>
</name>
<education>
<graduate>Yes</graduate>
<masters>Yes</masters>
</education>
<dob>25-MAR-1985</dob>
<location>city123</location>
</child>
</parent>
Я использовал файл преобразования XSLT 2.0, как показано ниже, но он не работает:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match= "child/education/graduate[node()]">
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>