|
Subject: [xsl] Match Parents Element ID From: "Byomokesh Sahoo sahoo.byomokesh@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Mon, 27 Jan 2025 08:58:10 -0000 |
Hi,
We have multiple XML files which need to fetch parent elements with
attributes only from one file. Find below my xsl and input files.
ID File: <!-- Take chapter based on the section file -->
<gd id="RB_A">
<act id="RB_C">
<title>SET</title>
<body>
<chap id="RB_CHAP1">
<sect id="RB_S1"/>
<sect id="RB_S2"/>
</chap>
<chap id="RB_CHAP2">
<sect id="RB_S3"/>
<sect id="RB_S4"/>
</chap>
</body>
</act>
</gd>
Sect file: <!-- Multiple Section file like this -->
<sce>
<gd id="RB_A">
<act id="RB_C">
<title>TITLE</title>
<body>
<sect id="RB_S1">
<title>Tile</title>
<p>Paragrph</p>
</sect>
</body>
</act>
</gd>
</sce>
Desired File:
<sce>
<gd id="RB_A">
<act id="RB_C">
<title>TITLE</title>
<body>
<chap id="RB_CHAP1">
<sect id="RB_S1">
<title>Title</title>
<p>Paragraph</p>
</sect>
</chap>
</body>
</act>
</gd>
</sce>
XSL:
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform
">
<xsl:output method="xml" version="1.0" encoding="ISO-8859-1"
indent="yes" />
<xsl:variable name="ch" select="'ID.xml'" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="sce/gd/act/body">
<xsl:variable name="info"
select="document($ch)//sce/gd/act/body/chap/sect[@id=current()/@id]/." />
<chap id="">
<xsl:attribute name="id">
<xsl:value-of select="$info[parent::chap[@id]]"/>
</xsl:attribute>
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
<xsl:for-each select="$info/*">
<xsl:copy-of select="." />
</xsl:for-each>
</xsl:copy>
</chap>
</xsl:template>
</xsl:transform>
Thanks
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] v4 mode, Graydon graydon@xxxx | Thread | Re: [xsl] Match Parents Element ID, Martin Honnen martin |
| Re: [xsl] v4 mode, Graydon graydon@xxxx | Date | Re: [xsl] Match Parents Element ID, Martin Honnen martin |
| Month |