Subject: RE: Changing a specific attribute value
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 28 Feb 2005 21:49:13 -0000
|
match="vr:Resource/@xsi:type[@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@xxxxxxxx]
> Sent: 28 February 2005 21:23
> To: xsl
> Subject: 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[@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
|