[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[Recent Entries]
[Reply To This Message]
Re: restructuring element hierarchy using xslt- compli
Subject: Re: restructuring element hierarchy using xslt- complications
From: "james walker" <jameswalkerandy@xxxxxxxxxxx>
Date: Tue, 30 Sep 2003 12:27:16 +0100
|
When taking this further i have realised that maybe the problem is more
complicate dthan i first thought, see u what u think below::
(apologies for the layout, done in hotmail so may look a little shabby)
the xml file looks like this:
<t>
<het position="1">
<entrydata columnnumber="0">
<text>some more text here</text></entrydata>
</het>
<het position="1.1">
<entrydata columnnumber="1">
<text>some more text here</text></entrydata>
</het>
<het position="1.1.1">
<entrydata columnnumber="2">
<text>text here</text></entrydata>
<entrydata columnnumber="3">
<text>more text here</text></entrydata>
<entrydata columnnumber="4">
<text>more text here</text></entrydata>
<entrydata columnnumber="5">
<text>more text here</text></entrydata>
<entrydata columnnumber="6">
<text>more text here</text></entrydata>
<entrydata columnnumber="7">
<text>more text here</text></entrydata>
<entrydata columnnumber="8">
<text>more text here</text></entrydata>
<entrydata columnnumber="9">
<text></text></entrydata>
</het>
<het position="1.1.2">
<entrydata columnnumber="2">
<text>text here</text></entrydata>
<entrydata columnnumber="3">
<text>more text here</text></entrydata>
<entrydata columnnumber="4">
<text>more text here</text></entrydata>
<entrydata columnnumber="5">
<text>more text here</text></entrydata>
<entrydata columnnumber="6">
<text>more text here</text></entrydata>
<entrydata columnnumber="7">
<text>more text here</text></entrydata>
<entrydata columnnumber="8">
<text>more text here</text></entrydata>
<entrydata columnnumber="9">
<text></text></entrydata>
</het>
<het position="2">
<entrydata columnnumber="0">
<text>some more text here</text></entrydata>
</het>
<het position="2.1">
<entrydata columnnumber="1">
<text>some more text here</text></entrydata>
</het>
<het position="2.1.1">
<entrydata columnnumber="2">
<text>text here</text></entrydata>
<entrydata columnnumber="3">
<text>more text here</text></entrydata>
<entrydata columnnumber="4">
<text>more text here</text></entrydata>
<entrydata columnnumber="5">
<text>more text here</text></entrydata>
<entrydata columnnumber="6">
<text>more text here</text></entrydata>
<entrydata columnnumber="7">
<text>more text here</text></entrydata>
<entrydata columnnumber="8">
<text>more text here</text></entrydata>
<entrydata columnnumber="9">
<text></text></entrydata>
</het>
</t>
and i was trying to recode it to nest:
<t>
<het position="1">
<entrydata columnnumber="0">
<text>some more text here</text></entrydata>
<het position="1.1">
<entrydata columnnumber="1">
<text>some more text here</text></entrydata>
<het position="1.1.1">
<entrydata columnnumber="2">
<text>text here</text></entrydata>
<entrydata columnnumber="3">
<text>more text here</text></entrydata>
<entrydata columnnumber="4">
<text>more text here</text></entrydata>
<entrydata columnnumber="5">
<text>more text here</text></entrydata>
<entrydata columnnumber="6">
<text>more text here</text></entrydata>
<entrydata columnnumber="7">
<text>more text here</text></entrydata>
<entrydata columnnumber="8">
<text>more text here</text></entrydata>
<entrydata columnnumber="9">
<text></text></entrydata>
</het>
<het position="1.1.2">
<entrydata columnnumber="2">
<text>text here</text></entrydata>
<entrydata columnnumber="3">
<text>more text here</text></entrydata>
<entrydata columnnumber="4">
<text>more text here</text></entrydata>
<entrydata columnnumber="5">
<text>more text here</text></entrydata>
<entrydata columnnumber="6">
<text>more text here</text></entrydata>
<entrydata columnnumber="7">
<text>more text here</text></entrydata>
<entrydata columnnumber="8">
<text>more text here</text></entrydata>
<entrydata columnnumber="9">
<text></text></entrydata>
</het>
</het>
</het>
<het position="2">
<entrydata columnnumber="0">
<text>some more text here</text></entrydata>
<het position="2.1">
<entrydata columnnumber="1">
<text>some more text here</text></entrydata>
<het position="2.1.1">
<entrydata columnnumber="2">
<text>text here</text></entrydata>
<entrydata columnnumber="3">
<text>more text here</text></entrydata>
<entrydata columnnumber="4">
<text>more text here</text></entrydata>
<entrydata columnnumber="5">
<text>more text here</text></entrydata>
<entrydata columnnumber="6">
<text>more text here</text></entrydata>
<entrydata columnnumber="7">
<text>more text here</text></entrydata>
<entrydata columnnumber="8">
<text>more text here</text></entrydata>
<entrydata columnnumber="9">
<text></text></entrydata>
</het>
</het>
</het>
</t>
but still hvaing a meard with it, any suggestions would be appreciated.
also, at the same time i thought that renaming different levelled hets would
be a good idea- any het with 1-9 = res, 1.1-1.9 = rol, 1.1.1-1.1.9 = prod,
so it would look like
<t>
<res>
<rol>
<prod>
</prod>
<prod>
</prod>
</rol>
<rol>
<prod>
</prod>
</rol>
</res>
</t>
would i have to create new elements or is there a function to change element
names??
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: restructuring element hierarchy using xslt Date: Mon, 29
Sep 2003 07:23:19 -0700 (PDT)
This transformation:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="Digits" select="1234567890"/>
<xsl:template match="/*">
<t>
<xsl:apply-templates
select="het[not(contains(@position, '.'))]"/>
</t>
</xsl:template>
<xsl:template match="het">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates
select="../het[starts-with(@position, current()/@position)
and
string-length(translate(@position,
$Digits,
''
)
)
=
1 + string-length(translate(current()/@position,
$Digits,
''
)
)
]"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
When applied to your source.xml:
<t>
<het position="1"></het>
<het position="1.1"></het>
<het position="1.1.1"></het>
<het position="1.1.2"></het>
<het position="1.2"></het>
<het position="1.2.1"></het>
<het position="2"></het>
<het position="2.1"></het>
<het position="2.1.1"></het>
</t>
produces the wanted result:
<t>
<het position="1">
<het position="1.1">
<het position="1.1.1"/>
<het position="1.1.2"/>
</het>
<het position="1.2">
<het position="1.2.1"/>
</het>
</het>
<het position="2">
<het position="2.1">
<het position="2.1.1"/>
</het>
</het>
</t>
=====
Cheers,
Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL
> I have an xml document like this:
>
> <het position="1"></het>
> <het position="1.1"></het>
> <het position="1.1.1"></het>
> <het position="1.1.2"></het>
> <het position="1.2"></het>
> <het position="1.2.1"></het>
> <het position="2"></het>
> <het position="2.1"></het>
> <het position="2.1.1"></het>
>
> and i was trying to get it to look like this:
>
> <het position="1">
> <het position="1.1">
> <het position="1.1.1">
> </het>
> <het position="1.1.2">
> </het>
> </het>
> <het position="1.2">
> <het position="1.2.1">
> </het>
> </het>
> </het>
> <het position="2">
> <het position="2.1">
> <het position="2.1.1">
> </het>
> </het>
> </het>
>
> In other words make it nested. I can get the first set of elements out
> by doing a contains() function in a predicate (<xsl:template
> match="het[contains(@position, '.')=false]">) but i am having a problem
> with template matching, i know i can't put a template match within a
> template match and this is causing me a bit of trouble.
__________________________________
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
_________________________________________________________________
Get Hotmail on your mobile phone http://www.msn.co.uk/msnmobile
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
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
RSS 2.0 |
|
Atom 0.3 |
|
|