Sign Up
Search
Options
search
Chat
Help
News
Log in
Not Logged in
Home
»
Boards
»
Stylus Studio Developer Network
»
XSLT Help and Discussion
»
How to convert in multi level element (xml to xml)
Topic
Topic Page
1
2
3
4
5
6
7
8
9
Prev Topic
Next Topic
next
Subject:
How to convert in multi level element (xml to xml)
Author:
Selva Ganesh
Date:
01 May 2009 05:31 AM
I need below placed in the input file to output file throughout xslt conversion please help me. thanks
Input file
<reg>
<h2>Amendment</h2>
<sub1>
<p>2.</p>
<p>(2)</p>
<sub2>
<p>(a)</p>
<p>(b)</p>
<p>(c)</p>
<p>(d)</p>
</sub2>
<p>(3)</p>
<p>(4)</p>
<sub2>
<p>(a)</p>
<p>(b)</p>
<sub3>
<p>(i)</p>
<p>(ii)</p>
</sub3>
</sub2>
<p>(5)</p>
<p>(7)</p>
<p>(6)</p>
<p>(7)</p>
<p>(8)</p>
<p>(9)</p>
</sub1>
</reg>
Output file
<reg>
<ti>Amendment</ti>
<s1>
<pt>2.</pt>
</s1>
<s1>
<pt>(2)</pt>
<s2>
<pt>(a)</pt>
</s2>
<s2>
<pt>(b)</pt>
</s2>
<s2>
<pt>(c)</pt>
</s2>
<s2>
<pt>(d)</pt>
</s2>
</s1>
<s1>
<pt>(3)</pt>
</s1>
<s1>
<pt>(4)</pt>
<s2>
<pt>(a)</pt>
</s2>
<s2>
<pt>(b)</pt>
<s3>
<pt>(i)</pt>
</s3>
<s3>
<pt>(ii)</pt>
</s3>
</s2>
</s1>
<s1>
<pt>(5)</pt>
</s1>
<s1>
<pt>(7)</pt>
</s1>
<s1>
<pt>(6)</pt>
</s1>
<s1>
<pt>(7)</pt>
</s1>
<s1>
<pt>(8)</pt>
</s1>
<s1>
<pt>(9)</pt>
</s1>
</reg>
Advance thanks,
Selva
Noname(44).
next
Subject:
How to convert in multi level element (xml to xml)
Author:
John Bampton
Date:
01 May 2009 08:18 AM
Originally Posted: 01 May 2009 08:17 AM
Hello, here is the solution
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="
http://www.w3.org/1999/XSL/Transform"
xmlns:xs="
http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:output method="xml" indent="no"></xsl:output>
<xsl:template match="reg">
<xsl:copy>
<xsl:apply-templates></xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="h2">
<ti>
<xsl:apply-templates></xsl:apply-templates>
</ti>
</xsl:template>
<xsl:template match="sub1">
<xsl:apply-templates select="p"></xsl:apply-templates>
</xsl:template>
<xsl:template match="p">
<xsl:choose>
<xsl:when test="parent::sub1 and ( name(following-sibling::*[1]) = ( 'p','') )">
<s1>
<pt>
<xsl:apply-templates></xsl:apply-templates>
</pt>
</s1>
</xsl:when>
<xsl:when test="parent::sub1 and ( name(following-sibling::*[1]) = 'sub2' )">
<s1>
<pt>
<xsl:apply-templates></xsl:apply-templates>
</pt>
<xsl:apply-templates select="following-sibling::sub2[1]"></xsl:apply-templates>
</s1>
</xsl:when>
<xsl:when test="parent::sub2 and ( name(following-sibling::*[1]) = ( 'p','') )">
<s2>
<pt>
<xsl:apply-templates></xsl:apply-templates>
</pt>
</s2>
</xsl:when>
<xsl:when test="parent::sub2 and ( name(following-sibling::*[1]) = 'sub3' )">
<s2>
<pt>
<xsl:apply-templates></xsl:apply-templates>
</pt>
<xsl:apply-templates select="following-sibling::sub3[1]"></xsl:apply-templates>
</s2>
</xsl:when>
<xsl:when test="parent::sub3">
<s3>
<pt>
<xsl:apply-templates></xsl:apply-templates>
</pt>
</s3>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template match="sub2">
<xsl:apply-templates select="p"></xsl:apply-templates>
</xsl:template>
<xsl:template match="sub3">
<xsl:apply-templates select="p"></xsl:apply-templates>
</xsl:template>
</xsl:stylesheet>
Cheers, John Bampton.
next
Subject:
How to convert in multi level element (xml to xml)
Author:
Selva Ganesh
Date:
03 May 2009 07:49 AM
Hi John Bampton,
Thank you very much
Selva
top
Subject:
How to convert in multi level element (xml to xml)
Author:
Selva Ganesh
Date:
03 May 2009 07:51 AM
Hi John Bampton,
Thank you very much
Selva
Topic Page
1
2
3
4
5
6
7
8
9
Prev Topic
Next Topic
Powered by
Stylus Studio
, the world's leading
XML IDE
for
XML
,
XSLT
,
XQuery
,
XML Schema
,
DTD
,
XPath
,
WSDL
,
XHTML
,
SQL/XML
, and
XML Mapping
!
Go to Conference:
Select Conference
Stylus Studio Feature Requests
Stylus Studio Technical Forum
Website Feedback
XSLT Help and Discussion
XQuery Help and Discussion
Stylus Studio FAQs
Stylus Studio Code Samples & Utilities
Stylus Studio Announcements
go
Log In Options
Username:
Password:
Site Map
|
Privacy Policy
|
Terms of Use
|
Trademarks
Stylus Scoop XML Newsletter:
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.