XSLT группировка плоский XML
Мне нужно сгруппировать данные на основе элемента и заполнить их.
ниже упоминается входной xml, и если вы видите, что есть 4 строки для P, а затем начинается элемент Head, то мне нужно сгруппироваться со следующими P.
Мне нужно преобразовать это-
<?xml version="1.0" encoding="UTF-8"?> <root> <row id="j1"> <name>Marcus C.</name> <P id="j1_p1">[1] Text</P> <P id="j1_p2">[2] Text</P> <P id="j1_p3">[3] Text</P> <P id="j1_p4">[4] Text</P> <Head hlevel="h1"> <Emph type="b">Facts</Emph> </Head> <P id="j1_p5">[5] Text</P> <P id="j1_p6">[6] Text</P> <P id="j1_p7">[7] Text</P> <Head hlevel="h1"> <Emph type="b">Trial</Emph> </Head> <P id="j1_p8">[8] Text</P> <P id="j1_p9">[9] Text</P> <P id="j1_p10">[10] Text</P> </row> </root>
Желаемым результатом будет :
<root> <row id="j1"> <name>Marcus C.</name> <P id="j1_p1">[1] Text</P> <P id="j1_p2">[2] Text</P> <P id="j1_p3">[3] Text</P> <P id="j1_p4">[4] Text</P> <Group> <Head hlevel="h1"> <Emph type="b">Facts</Emph> </Head> <P id="j1_p5">[5] Text</P> <P id="j1_p6">[6] Text</P> <P id="j1_p7">[7] Text</P> </Group> <Group> <Head hlevel="h1"> <Emph type="b">Trial</Emph> </Head> <P id="j1_p8">[8] Text</P> <P id="j1_p9">[9] Text</P> <P id="j1_p10">[10] Text</P> </Group> </row> </root>
Спасибо.
Что я уже пробовал:
<xsl:template match="row/Head[child::Emph]"> <Group> <Head> <xsl:apply-templates /> </Head> </Group> </xsl:template>