OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Re: [xml-dev] Does WTSIWYG make simplicity moot?

[ Lists Home | Date Index | Thread Index ]

In a message dated 13/11/2002 20:26:09 GMT Standard Time, mgushee@havenrock.com writes:


It also makes XSLT processing vastly more complicated. Say you want
to change the fill color on all filled objects to 'blue', but leave
the unfilled ones alone. With discrete style attributes, you can do
this:

  <xsl:apply-templates select="@fill"/>

  <xsl:template match="@fill[normalize-space() = 'none']">
    <xsl:copy-of select="."/>
  </xsl:template>

  <xsl:template match="@fill">
    <xsl:attribute name="fill">blue</xsl:attribute>
  </xsl:template>

Whereas if you use the single 'style' attribute, you have to resort
to something ugly and inefficient like:

  <xsl:call-template name="process-style">
    <xsl:with-param name="style" select="@style"/>
  </xsl:call-template>

  <xsl:template name="process-style">
    <xsl:param name="style"/>
    <xsl:variable name="property"
      select="substring-before($style,';')"/>
    <xsl:variable name="property-name"
      select="normalize-space(substring-before($property, ':'))"/>
    <xsl:variable name="property-value"
      select="normalize-space(substring-after($property, ':'))"/>
    <xsl:attribute name="$property-name">
      <xsl:choose>
        <xsl:when test="$property-name='fill' and
                        $property-value='none'">
          none
        </xsl:when>
        <xsl:when test="$property-name='fill'">
          blue
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="$property-value/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:attribute>
    <xsl:variable name="remainder"
      select="substring-after($style,';')"/>
    <xsl:if test="$remainder">
      <xsl:call-template name="process-style">
        <xsl:with-param name="style" select="$remainder"/>
      </xsl:call-template>
    </xsl:if>
  </xsl:template>

Ow! That's even worse than I thought. I've never actually done that
before, just thought about it.


Matt,

Possibly a better option is to consider putting all the styling of the SVG in an external CSS style sheet in the first place and make a tiny hand edit there. :)

I assume, but don't know, that the SVG WG decided to provide several options for styling syntax because there are different approaches to creating SVG. The style attribute is the one I prefer when hand coding small SVG documents. For larger ones I would tend to use external CSS. As you point out, when using XSLT there can be advantages in using separate attributes.

Having the three options of how to specify style is actually quite useful in practice. You choose the option that best suits the situation.

Andrew Watt




 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS