Print

Print


I can chime in on the subject of switching from XSLT 1.0 to XSLT 2.0
for serving up your finding aids. While people usually (logically)
assume that if there is a 1.0 and a 2.0 of something, eventually
everyone will switch to 2.0, that is NOT the case with XSLT. The main
reason you would not want to use XSLT 2.0 for serving up finding aids
is, as you said, that there is no browser support for 2.0, meaning the
browser cannot transform your XML for you. You would have to transform
all your XML files to HTML files yourself and then stick those HTML
files out there on the web. That's not a total deal breaker of course,
it just makes things more complicated. As an example, the Southern
Historical Collection at UNC-Chapel Hill moved to XSLT 2.0 in 2009 for
finding aids because they had some things they wanted to do that
required 2.0 capabilities and they were willing to trade off the
browser transformation. They have a script they can run that
regenerates their HTML from XML for them.

However, not only is there currently no browser support for XSLT 2.0,
there will almost certainly never be any browser support for it. While
Microsoft originally had plans to support XSLT 2.0 in the browser,
they officially abandoned these plans years ago and no other browser
had plans to try supporting it. The only processor that supports
transformation of 2.0 is Saxon, created and maintained by Michael Kay
(editor of the W3C spec for XSLT 2.0) himself. It requires either Java
or Microsoft.NET. So in fact as far as anyone knows, no one had plans
to support 2.0 in the future other than Michael Kay. For a technology
to only have a single source of support to rely on makes it a pretty
iffy option in many people's eyes. XSLT 2.0 is used mostly for
transforming XML to XML, as Mark and others are using it.

If you're wondering why no one is moving towards supporting 2.0, I
think that XSLT was missing some crucial data functionality in the 1.0
version and while 2.0 provides a lot of awesome new functionality
(sequences, grouping, multiple result trees, xpath 2.0, user-defined
functions), it came too late and people are moving away from it
already. Also, XSLT in general is based on functional programming
ideas and is declarative, therefore, unintuitive, to many people with
prior training in other programming languages and not really worth the
time it would take them to learn. For simple XML changes, other
programming languages often have their own libraries for XML that are
more convenient to use.

That said, I think XSL is very good at fulfilling its intended purpose
and there is definitely an enthusiastic base of users out there. If
you ever have a tricky XSL problem, consider taking it to the XSL-list
(http://www.mulberrytech.com/xsl/xsl-list/). I've always gotten an
elegant solution to things that were stumping me there within hours.
Michael Kay himself will answer you if no one else does!

Joyce

On Fri, Jun 3, 2011 at 9:48 AM, Michele R Combs <[log in to unmask]> wrote:
> Oh right -- I don't have to test for content, I just test for existence of the element. �Duh. �Thanks :)
>
> Are you switching to 2.0 for your production version, or just for your own edification and jollification? �According to what I could find out 2.0 isn't widely supported yet (e.g. by browsers), so I'm not sure we want to switch just yet.
>
> Michele
>
> -----Original Message-----
> From: Encoded Archival Description List [mailto:[log in to unmask]] On Behalf Of Custer, Mark
> Sent: Friday, June 03, 2011 9:37 AM
> To: [log in to unmask]
> Subject: Re: XSLT 1.0 => 2.0
>
> Hi Michele,
>
> I just took a quick glance, and I think that your conditional would be valid if you just remove all of those "string" functions.
>
> As an aside, I just recently worked on some of my first XSLT 2.0 style sheets, and it was very nice to shorten some code that took up way too many lines in 1.0. �Have fun!
>
> Mark
>
> -----Original Message-----
> From: Encoded Archival Description List [mailto:[log in to unmask]] On Behalf Of Michele R Combs
> Sent: Friday, June 03, 2011 9:13 AM
> To: [log in to unmask]
> Subject: XSLT 1.0 => 2.0
>
> Just for fun, I took a quick run at converting our style sheets from XSLT1.0 to XSLT2.0 this week and got the following error:
>
> Error on line 451 of eadcbs6-su1.xsl:
> �XPTY0004: A sequence of more than one item is not allowed as the first argument of
> �string() (<head/>, <p/>)
> �at xsl:call-template name="toc" (file:/G:/LIB/Special%20Collections/Digital%20Projects/EAD/saxon/../styles/eadcbs6-su1.xsl#230)
> �in built-in template rule
> Transformation failed: Run-time errors were reported
>
> Line 451, in context, looks like this:
>
> � � �<xsl:if test="string(archdesc/acqinfo/*)
> � � �or string(archdesc/processinfo/*)
> � � �or string(archdesc/prefercite/*)
> � � �or string(archdesc/custodialhist/*)
> � � �or string(archdesc/processinfo/*)
> � � �or string(archdesc/appraisal/*)
> � � �or string(archdesc/accruals/*)
> � � �or string(archdesc/*/acqinfo/*)
> � � �or string(archdesc/*/processinfo/*)
> � � �or string(archdesc/*/prefercite/*)
> � � �or string(archdesc/*/custodialhist/*)
> � � �or string(archdesc/*/processinfo/*)
> � � �or string(archdesc/*/appraisal/*)
> � � �or string(archdesc/*/accruals/*)"> � � <= line 451
> � � � � <p class="toclink">
> � � � � � �<a class="toc" href="#adminlink">
> � � � � � � � <xsl:text>Administrative Information</xsl:text>
> � � � � � �</a>
> � � � � </p>
> � � �</xsl:if>
>
> I've checked the W3C document at http://www.w3.org/TR/xslt20/#incompatibilities (which, while not impenetrable, is not exactly crystal clear either) and am not sure what the problem is. �Surely I can test multiple conditions, so is it a syntax thing?
>
> Michele
>
> ++++++++++++++++
> Michele Combs
> Librarian for Manuscripts and Archives Processing Special Collections Research Center Syracuse University
> 315-443-2081
> [log in to unmask]
>



-- 
Joyce Chapman
NCSU Libraries
Metadata and Cataloging/
Digital Library Initiatives
[log in to unmask]