Print

Print


Hi,
    Have you tried defining $langCodes like...

<xsl:variable
    name="langCodes"
    select="marc:subfield[@code='a'or @code='d'
        or @code='e' or @code='2']"/>

<xsl:copy-of> generates a result tree fragment, which is not amenable
to further processing in vanilla XSLT 1.0.  Several processors have
extensions to operate on result tree fragments; Saxon may, but I've
never used its extensions so I wouldn't know for certain.

--Andy

>>> [log in to unmask] 2004-03-02 13:30:11 >>>
I had a quick question regarding the use of the new MODS3 xslt with
Microsoft's MSXML4 parser.  I use the MODS format to store data in an
internal SQL database, so when the v3 sheet was made available, I
started looking to change the processing scripts.  The problem that
I'm
running into though, is that the MSXML parser seems to believe that
the
following section is not valid (or at least, won't allow stylesheet to
be set as long as this section is present).  I've marked the affected
section in red:

                <xsl:for-each select="marc:datafield[@tag=041]">

                        <xsl:variable name="langCodes">
                                <xsl:copy-of
select="marc:subfield[@code='a'or @code='d' or @code='e' or
@code='2']"/>
                        </xsl:variable>
                         <xsl:choose>
                                <--XSL:WHEN TEST STOPPING THE MSXML
TRANSFORMATION-->
                                <xsl:when
test="$langCodes/child::*[@code='2']='rfc3066'">
                                ....
                        </xsl:choose>

                </xsl:for-each>

To get the stylesheet to work with the msxml4 parser, I simply had to
do
the following:

                <xsl:for-each select="marc:datafield[@tag=041]">

                        <xsl:variable name="langCodes">
                                <xsl:copy-of
select="marc:subfield[@code='a'or @code='d' or @code='e' or
@code='2']"/>
                        </xsl:variable>
                         <xsl:choose>
                                <!--<xsl:when
test="$langCodes/child::*[@code='2']='rfc3066'">-->
                                <xsl:when
test="../marc:subfield[@code='2']='rfc3066'">
                                ....
                        </xsl:choose>

                </xsl:for-each>

Since the stylesheet has worked with SAXON, I'm assuming that this is
a
MSXML issue and just wanted to see if others may have had similar
experiences.

--Terry


************************************************************************
***************
Terry Reese
Oregon State University Libraries
Cataloger for Networked Resources
Digital Production Unit Head
Oregon State University
Corvallis, Or  97331
Phone: 541-737-6384
Fax: 541-737-8267
[log in to unmask]
http://oregonstate.edu/~reeset/
************************************************************************
**************