match="vr:Resource/@xsi:type[(_at_)xsi:type='q1:ConeSearch']
You mean
match="vr:Resource/@xsi:type[.='q1:ConeSearch']
An xsi:type attribute never has an xsi:type attribute.
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: andrew cooke [mailto:acooke(_at_)noao(_dot_)edu]
Sent: 28 February 2005 21:23
To: xsl
Subject: [xsl] Changing a specific attribute value
Hi,
Sorry to bother you. I'm going round in circles here and would
appreciate help with the following.
I would like to transform data like:
...
<metadata>
<vr:Resource xmlns:vr="http://www.ivoa.net/xml/VOResource/v0.10"
xmlns:oai="http://www.openarchives.org/OAI/2.0/"
xmlns:oxf="http://www.orbeon.com/oxf/processors"
xmlns:carn="http://www.cacr.caltech.edu/projects/us-vo/schemas
/Carnivore"
xmlns:p="http://www.orbeon.com/oxf/pipeline" xsi:type="q1:ConeSearch"
updated="2005-02-11">
<title xmlns="http://www.ivoa.net/xml/VOResource/v0.10"
xmlns:q1="http://www.ivoa.net/xml/ConeSearch/v0.3">Sloan Digitized Sky
Survey(DR3)</title>
<shortName xmlns="http://www.ivoa.net/xml/VOResource/v0.10"
...
so that the "xsitype" attribute of vr:Resource has the value
"cs:ConeSearch" (yes, there's something suspicious in that q1 is
defined as a namespace abbreviation in the next element -
that's not my
problem, I am treating the attribute value as a simple string)
I am trying to use the following template:
<xsl:stylesheet version="2.0">
<xsl:template match="vr:Resource">
<vr:Resource>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates select="*"/>
</vr:Resource>
</xsl:template>
<xsl:template
match="vr:Resource/@xsi:type[(_at_)xsi:type='q1:ConeSearch']"
priority="2">
<xsl:attribute name="xsi:type">cs:ConeSearch</xsl:attribute>
</xsl:template>
<xsl:template match="vr:Resource/@*">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template match="*">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
This is inside a pipeline system, and the namespace
defintions are in the
environment. However, this is not working (the element and
attributes are
copied - if I supply a different element name it is used - but the
attribute value for xsi:type is unaltered). My questions are:
- Why isn't this changing the attribute value?
- Why do I need to explicitly apply the templates to each attribute?
Shouldn't that be done by the built-in rules? (If I don't,
it seems to
only process attributes "up to" the xsi:type).
I'm basing my solution on
http://www.stylusstudio.com/xsllist/200402/post30540.html if that
helps explain anything.
Help would be very much appreciated. There's something I'm
missing when
it comes to attributes, and I don't understand what it is.
Thanks,
Andrew
--
` __ _ __ ___ ___| |_____ work web site:
http://www.ctio.noao.edu/~andrew
/ _` / _/ _ \/ _ \ / / -_) personal web site:
http://www.acooke.org/andrew
\__,_\__\___/\___/_\_\___| list:
http://www.acooke.org/andrew/compute.html
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--