|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Help with transforming unique set of data in XSLT 2.0
Hi All,
I am having difficulty get the following stylesheet to transform
unique set of
data once:
1 <xsl:template match="/">
2
<xsl:apply-templates select="document('E:/employee.xml')/ns:html"/>
3
</xsl:template>
4
5 <xsl:template match="ns:html">
6 <employee>
7
<xsl:for-each
select="ns:body/ns:div[@id='content']/ns:table[@class='sresults']/ns:tr/ns:td
/ns:a">
8 <first_name><xsl:value-of
select="substring-before(@given_name,',')"/></first_name>
9
<surname><xsl:value-of select="@family_name"/></surname>
10
<sex><xsl:value-of select="@gender"/></sex>
11 </xsl:for-each>
12
</employee>
13 </xsl:template>
The following output generated duplicated
set of identical transformed data when
using <xsl:for-each>:
<?xml
version="1.0" encoding="UTF-8"?>
<employee>
<first_name>John</first_name>
<surname>smith</surname>
<sex>M</sex>
<first_name>Kelly</first_name>
<surname>Jones</surname>
<sex>F</sex>
</employee>
<?xml version="1.0"
encoding="UTF-8"?>
<employee>
<first_name>John</first_name>
<surname>smith</surname>
<sex>M</sex>
<first_name>Kelly</first_name>
<surname>Jones</surname>
<sex>F</sex>
</employee>
I tried the following
changes after suspecting that the cause was from the
<xsl:for-each>
statement:
1 <xsl:template match="/">
2 <xsl:apply-templates
select="document('E:/employee.xml')/ns:html"/>
3 </xsl:template>
4
5
<xsl:template match="ns:html">
6 <employee>
7 <xsl:variable
name="employee_data"
select="ns:body/ns:div[@id='content']/ns:table[@class='sresults']/ns:tr/ns:td
/ns:a"/>
8 <xsl:apply-templates select="$employee_data"/>
9
<first_name><xsl:value-of
select="substring-before(@title,',')"/></first_name>
10
<surname><xsl:value-of select="@href"/></surname>
11 <sex><xsl:value-of
select="@gender"/></sex>
12 </employee>
13 </xsl:template>
Below is the
output without using <xsl:for-each>:
<?xml version="1.0" encoding="UTF-8"?>
<employee>
John Kelly
<firstname />
<surname />
<sex/>>
</employee>
<?xml version="1.0" encoding="UTF-8"?>
<employee>
John Kelly
<firstname />
<surname />
<sex/>>
</employee>
Any ideas on what is causing the
duplications and why is the second stylesheet
picking up the firstnames of 2
separate xml documents in the wrong place?
The desire output is just a single
entry of each record such as the following:
<?xml version="1.0"
encoding="UTF-8"?>
<employee>
<first_name>John</first_name>
<surname>smith</surname>
<sex>M</sex>
<first_name>Kelly</first_name>
<surname>Jones</surname>
<sex>F</sex>
</employee>
Thanks a lot,
Jack
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








