On Fri, 2011-09-23 at 12:25 -0700, dvint(_at_)dvint(_dot_)com wrote:
I'm trying to use XSLT to do a conversion from one version of the S1000D
spec to another. So in the older version you can have this:
<reqpers>
<person man="1"/>
<perscat category="tech"/>
<trade>foo</trade>
<person man="2"/>
<perscat category="techa"/>
<perskill skill="sk05"/>
<trade>bar</trade>
<esttime>23</esttime>
</reqpers>
In the newer version you have a nested structure:
<reqPersons>
<person man="1">
<personCategory personCategoryCode="tech"/>
<trade>foo</trade>
</person>
<person man="2">
<personCategory personCategoryCode="techa"/>
<personSkill skillLevelCode="sk05"/>
<trade>bar</trade>
<esttime>23</esttime>
</person>
<reqPersons>
Although it's a grouping problem I'd quite likely (depending on the
actual schemas) have a template to match person that looked ahead and
called apply-templates on the following elements in a mode, and have
templates e.g. for trade, that were empty --
<xsl:template match="trade|perskill|esttime" />
<xsl:template match="trade" mode="nested">
<xsl:copy-of select="."/> <!--* or whatever *-->
</xsl:template>
I see this is similar to your approach, so...
I can use the following sibling to pull the elements under a new <person>
tag, but the problem is that none of the following elements are requried.
So this will work if I have a consistent combination of elements.
<xsl:template match="person">
<person>
<xsl:call-template name="processSecurityAttributes"/>
<xsl:call-template name="processsChangeAttributes"/>
<xsl:call-template name="processsIDAttributes"/>
<xsl:call-template name="processsApplicabilityAttributes"/>
<xsl:if test="@man">
<xsl:attribute name="man" select="@man"/>
</xsl:if>
You can do all those at once with a mode:
<xsl:apply-templates
select="processSecurityAttribuets|removeSocks"
mode="my-happy-person-mode" />
Then you don't need the for-eaches you're using.
For the two-person-elements question you need to say what you want to
happen in that case bfore anyone can help you with it :-)
Liam
--
Liam Quin - XML Activity Lead, W3C, http://www.w3.org/People/Quin/
Pictures from old books: http://fromoldbooks.org/
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--