XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Milan EricSubject: Nested tags
Author: Milan Eric
Date: 12 Feb 2009 07:42 AM
I need help creating XSL file that will do the following transformations, and just copy rest of the tags as-is
---------------------------
From:
<w:p><customXml w:element=”a”/> </w:p>

To:
<w:p>
<Sdt>
<w:r>
<content ns=a>
</w:r>
</Sdt>
</w:p>
----------------------------
From:
<w:r><customXml w:element=”a”/> </w:r>
To:
<w:p>
<Sdt>
<w:r>
<content ns=a>
</w:r>
</Sdt>
</w:p>
Difference from previous I have to create <w:p> tag also in this one.
----------------------------
From:
<customXml w:element=”a”>
<customXml w:element=”b”/>
</customXml>
To:
<w:p>
<Sdt>
<w:r>
<content ns= a/b>
</w:r>
</Sdt>
</w:p>
This also have variations with <w:p> and <w:r> in front of <customXml>
--------------------------
From:
<customXml w:element=”a”>
<w:p> //or <w:r>//or nothing
<customXml w:element=”b”/>
</w:p> // or </w:r>//or nothing
</customXml>
To:
<w:p>
<Sdt>
<w:r>
<content ns= a/b>
</w:r>
</Sdt>
</w:p>
It also can have more levels and I need to transform XML accordingly
----------------------------
<customXml w:element=”a”>
<w:p> //or <w:r>//or nothing
<customXml w:element=”b”>
<customXml w:element=”c”/>
.....
</customXml>
</w:p> // or </w:r>//or nothing
</customXml>
To:
<w:p>
<Sdt>
<w:r>
<content ns= a/b/c/…>
</w:r>
</Sdt>
</w:p>

Sorry for the length of post, but I think it’s better to have more details

Postnext
John BamptonSubject: Nested tags
Author: John Bampton
Date: 12 Feb 2009 09:34 AM
Try for the first one:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:w="http://www.what.org">
<xsl:template match="/">
<w:p>
<Sdt>
<w:r>
<xsl:value-of select="/w:p/customXml/attribute::w:element"></xsl:value-of>
</w:r>
</Sdt>
</w:p>
</xsl:template>
</xsl:stylesheet>

the rest are very similar

Postnext
Milan EricSubject: Nested tags
Author: Milan Eric
Date: 12 Feb 2009 09:52 AM
If I did it like this I would have to cover all possibilities. But I don't know how "deep" can nesting go, and I have to remember all elements from parent tags. and Also copy all of other tags that are not customXml

I.e.
<w:p>
<customXml w:element="a">
<w:r>
<some tag1/>
<customXml w:element="b">
<some tag2/>
<customXml w:element="c">
<customXml w:element="d">
<some tag3/>
<customXml w:element="e" />
</customXml>
</customXml>
</customXml>
</w:r>
</customXml>
</w:p>

Should become:
<w:p>
<w:r>
<some tag1/>
<some tag2/>
<some tag3/>
</w:r>
<Sdt>
<w:r>
<content ns= a/b/c/d/e…>
</w:r>
</Sdt>
</w:p>

In short, only deepest tags should be written, but problem also is that this is one of possibilities:

<customXml w:element="a">
<customXml w:element="b">
<customXml w:element="c"/>
</customXml>
<customXml w:element="d"/>
</customXml>

This should transform into:

<Sdt>
<w:r>
<content ns= a/b/c>
</w:r>
</Sdt>
<Sdt>
<w:r>
<content ns= a/d>
</w:r>
</Sdt>

Posttop
Milan EricSubject: Nested tags
Author: Milan Eric
Date: 12 Feb 2009 10:08 AM
Originally Posted: 12 Feb 2009 10:06 AM
This might help! This is my solution for w:p/customXml and it works only if it's 2 customXmls deep, and this checks if there are no customXmls deeper

<xsl:template match="w:p/w:customXml">
<xsl:choose>
<xsl:when test="normalize-space(.//w:customXml @w:element) = ''">
<xsl:element name="w:sdt">
<xsl:attribute name="context"><xsl:value-of select=Parent::@w:element/>/<xsl:value-of select="@w:element"/></xsl:attribute>
</xsl:element>

</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! 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

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
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.