Subject: Re: [xsl] Find the node name of the parent in the result tree? From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> Date: Fri, 22 Mar 2013 17:23:19 -0400 |
If I have a template matching an attribute, and producing one in the output tree, like this:
<xsl:template match="@style"> <xsl:attribute name="style" select="."/> </xsl:template>
<xsl:template match="@style"> <xsl:copy-of select="."/> </xsl:template>
Is there any way to know the name of the element in the result tree which is the parent of the attribute being created?
Some context: I'm turning TEI @style attributes into HTML @style attributes in the output, and I'd like to handle situations in which this kind of input:
<hi rend="text-align: center;">Centred text</hi>
results in output that doesn't work:
<span style="text-align: center;">NOT centred because it's a span</span>
If I knew the output element was a <span> or element which is inline by default, I could add "display: block" automatically to any @style attribute that contains a block-level CSS property such as text-align. I don't want to add "display: block" in all cases, because e.g. a <div> element might already have a class which floats it.
<xsl:template match="some-block-element"> <div> <xsl:apply-templates> <xsl:with-param name="in-a-div" tunnel="yes" select="true()"/> </xsl:apply-templates> </div> </xsl:template>
<xsl:template match="@style"> <xsl:param name="in-a-div" tunnel="yes" select="false()"/> <xsl:attribute name="style" select="concat(.,if( $in-a-div ) then ';display:block' else'')"/> </xsl:attribute> </xsl:template>
-- Public XSLT, XSL-FO, UBL and code list classes in Europe -- Apr 2013 | Contact us for world-wide XML consulting and instructor-led training | Free 5-hour lecture: http://www.CraneSoftwrights.com/links/udemy.htm | Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ | G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx | Google+ profile: https://plus.google.com/116832879756988317389/about | Legal business disclaimers: http://www.CraneSoftwrights.com/legal |
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Find the node name of the par, Martin Holmes | Thread | Re: [xsl] Find the node name of the, Michael Kay |
[xsl] Find the node name of the par, Martin Holmes | Date | Re: [xsl] Find the node name of the, Michael Kay |
Month |