[xsl] losing element tags during copy-of

Subject: [xsl] losing element tags during copy-of
From: Terry Ofner <tofner@xxxxxxxxxxx>
Date: Tue, 11 Dec 2007 16:56:30 -0500
Original xml is in the following format. Note the <i> elements in the <SS> elements.

<Root>
<Story>
<State_Standard skill="01" state="GA">
<State>Georgia Standards</State>
<SS>ELA3R2e The student identifies and infers meaning from common root words, common prefixes (e.g.,
<i>un-, re-, dis-, in-</i>), and common suffixes (e.g., <i>-tion, - ous, -ly</i>).</SS>
</State_Standard>
</Story>
<Story>
<State_Standard skill="02" state="GA">
<State>Georgia Standards</State>
<SS>ELA3R2e The student identifies and infers meaning from common root words, common prefixes (e.g.,
<i>un-, re-, dis-, in-</i>), and common suffixes (e.g., <i>- tion, -ous, -ly</i>).</SS>
</State_Standard>
</Story>
. . .
</Root>


I am processing this using the following 2.0 stylsheet (Saxon8):

<xsl:stylesheet version="2.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
     xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/";>
<xsl:output method="xml" indent="no"/>
<xsl:strip-space elements= "*" />

<!--State Standards file-->
<xsl:variable name="StateFile" select="document('stateCodes.xml')" />
<xsl:key name="standard" match="state" use="@abbr" />

<!--Lesson Name file-->
<xsl:variable name="lessonFile" select="document('Grade3Skills.tab')" />
<xsl:key name="lessonName_by_num" match="skill" use="@num" />

<!--Place State Standard info at top page-->

<xsl:template match="/">
<Root><Title>
<xsl:variable name="LocalState" select="//@state" />
<xsl:for-each select="$StateFile">
<xsl:value-of select="key('standard', $LocalState)" />
</xsl:for-each>
</Title><xsl:text>&#10;</xsl:text>
<xsl:variable name="LocalState" select="//@state" />
<Description>This chart correlates the <xsl:for-each select="$StateFile"><xsl:value-of select="key('standard', $LocalState)" /></xsl:for-each> to the lessons of <b>xxxx, Level C.</ b></Description><xsl:text>&#10;</xsl:text>


<!--Insert Adobe InDesign Table Header-->
<Table xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/"; aid:table="table" aid:trows="33" aid:tcols="2"><xsl:text>&#10;</ xsl:text>


<Cell aid:table="cell" aid:theader="" aid:crows="1" aid:ccols="1" aid:ccolwidth="342.5">Standard</Cell><xsl:text>&#10;</xsl:text>

<Cell aid:table="cell" aid:theader="" aid:crows="1" aid:ccols="1" aid:ccolwidth="197">Lesson(s)</Cell><xsl:text>&#10;</xsl:text>

<!--Grouping xml for first column of table-->
<xsl:for-each-group select="//SS" group-by=".">
<xsl:sort select="."/>
<Cell aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="342.5">


<xsl:copy-of select="current-grouping-key()"/></Cell><xsl:text>&#9;</ xsl:text>

!--Add lessons info for second column of table-->
<xsl:variable name="skillNumber" select="current-group()/../@skill"/>
<xsl:for-each select="$lessonFile">
<Cell aid:table="cell" aid:crows="1" aid:ccols="1" aid:ccolwidth="197.">
<xsl:value-of select="key('lessonName_by_num', $skillNumber)" /></ Cell><xsl:text>&#10;</xsl:text>
</xsl:for-each>
</xsl:for-each-group>
</Table></Root>
</xsl:template>


<!--Copy other nodes-->
<xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

</xsl:stylesheet>



I realize that the aid: namespace information makes this a bit hard to see. Sorry about that. At any rate, can anyone explain why the stylesheet strips out the <i> elements of the original <SS> content? The result looks, in part, like this:

<Cell aid:...>ELA3R2e The student identifies and infers meaning from common root words, common prefixes (e.g., un-, re-, dis-, in-), and common suffixes (e.g., -tion, -ous, -ly).</Cell> <Cell. . .>Lesson 1: Prefixes Lesson 2: Suffixes Lesson 3: Root Words/Base Words</Cell>

I thought that the xsl:copy-of would keep the <i> tags.

Any ideas would be appreciated.

I have one other issue with this stylesheet. But that can wait.

Terry
Terry Ofner

Current Thread