xsl-list
[Top] [All Lists]

[xsl] Getting WordprocessingML p style / was: Re: [xsl] Problem with Positional Grouping from MSXML

2007-02-02 09:37:55
Florent Georges wrote:

  <xsl:function name="my:p-style" as="xs:string">
    <xsl:param name="p" as="element()"/>
    <xsl:sequence select="$p/w:pPr/w:pStyle/@w:val"/>
  </xsl:function>

Thank you, Darkman, for contributing this style sheet function which is indeed very useful for checking a paragraph's style in WordprocessingML in a call like this:

<xsl:template match="w:p[my:p-style(.) eq 'BodyHeading']">
...

I suggest using "=" instead of "eq", because of the general comparison behaviour of "=" (described here: http://www.w3.org/TR/xpath20/#id-general-comparisons - thank you and MK for this URL!). It thus allows to test against several styles at once, when they are contained in a sequence:

<xsl:template
  match="w:p[my:p-style(.) = ('Heading5', 'Heading6')]">
...

As a matter of taste, I prefer putting the comparison operator rather inside the function definition than into each call:

<xsl:function name="my:match-p-style" as="xs:boolean">
  <xsl:param name="node" as="element()"/>
  <xsl:param name="styles"/>
  <xsl:value-of select="$node/w:pPr/w:pStyle/@w:val = $styles"/>
</xsl:function>


<xsl:template
  match="w:p[my:match-p-style(., 'BodyHeading')]">
...

<xsl:template
  match="w:p[my:match-p-style(., ('Heading5', 'Heading6'))]">
...


Has somebody further improvements to suggest, which might perhaps reduce the amount of redundant code even more?

  Yves


--~------------------------------------------------------------------
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>
--~--