|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Adding hierarchy
Hi Jim,
Please try the following XSL --
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0"
encoding="UTF-8" indent="yes"/>
<xsl:template match="/root">
<root>
<xsl:for-each select="*">
<xsl:if test="name(following-sibling::*[1]) =
'blankLIne' ">
<xsl:copy-of select="preceding-sibling::*" />
<xsl:copy-of select="." />
</xsl:if>
</xsl:for-each>
<xsl:for-each select="lineGroup">
<xsl:if test="name(preceding-sibling::*[1]) =
'blankLIne' ">
<lineGroup type="stanza">
<xsl:copy-of select="."/>
<xsl:copy-of
select="following-sibling::lineGroup" />
</lineGroup>
</xsl:if>
</xsl:for-each>
<xsl:for-each select="lineGroup">
<xsl:if test="not(name(following-sibling::*[1]) =
'lineGroup') ">
<xsl:copy-of select="following-sibling::*" />
</xsl:if>
</xsl:for-each>
</root>
</xsl:template>
</xsl:stylesheet>
When the above XSL is applied to the XML --
<?xml version="1.0" encoding="UTF-8"?>
<root>
<A>
<x>123</x>
</A>
<blankLIne />
<lineGroup>
<line></line>
<line></line>
</lineGroup>
<lineGroup>
<line></line>
<line></line>
<lineGroup>
<line></line>
<line></line>
</lineGroup>
<line></line>
</lineGroup>
<B>
<y>abc</y>
</B>
</root>
it produces output --
<?xml version="1.0" encoding="UTF-8"?>
<root>
<A>
<x>123</x>
</A>
<lineGroup type="stanza">
<lineGroup>
<line/>
<line/>
</lineGroup>
<lineGroup>
<line/>
<line/>
<lineGroup>
<line/>
<line/>
</lineGroup>
<line/>
</lineGroup>
</lineGroup>
<B>
<y>abc</y>
</B>
</root>
I have added structures <root>, <A> and <B> to
illustrate concept..
I hope such a XSL was required ..
Regards,
Mukul
--- Jim_Albright@xxxxxxxxxxxx wrote:
> Thank you for help in the past. Next question.
>
> Starting with this piece, I want to add a wrapper
> around a whole set of
> lineGroup elements
>
> <blankLIne>
> <lineGroup>
> <line></line>
> <line></line>
> </lineGroup>
> <lineGroup>
> <line></line>
> <line></line>
> <lineGroup>
> <line></line>
> <line></line>
> </lineGroup>
> <line></line>
> </lineGroup>
> <p>.......or any non lineGroup element .....
>
> should change to
> <lineGroup type="stanza">
> <lineGroup>
> <line></line>
> <line></line>
> </lineGroup>
> <lineGroup>
> <line></line>
> <line></line>
> <lineGroup>
> <line></line>
> <line></line>
> </lineGroup>
> <line></line>
> </lineGroup>
> </lineGroup>
> <p>.......or any non lineGroup element .....
> So a blankLine as preceding-sibling to lineGroup is
> the trigger to then
> process all following-sibling lineGroups.
>
> A 2.0 solution is welcome if needed.
>
>
> Jim Albright
> 704 843-0582
> Wycliffe Bible Translators
>
>
>
> XSL-List info and archive:
> http://www.mulberrytech.com/xsl/xsl-list
>
__________________________________
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
|
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








