|
Subject: RE: [xsl] Accessing attribute in a variable with conditional value From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Wed, 1 Aug 2007 20:02:19 +0100 |
Options:
(a) use XSLT 2.0
(b) failing that, use the xx:node-set() extension in 1.0
(c) get the value of the base attribute in both branches:
> <xsl:variable name="validAttributeTypeBase">
> <xsl:if test="key('allTypes', @type)">
> <xsl:copy-of select="key('allTypes',
@type)/xsd:restriction/@base"/>
> </xsl:if>
> <xsl:if test="xsd:simpleType"
> <xsl:copy-of select="xsd:simpleType/xsd:restriction/@base"/>
> </xsl:if>
> </xsl:variable>
(are they mutually exclusive, by the way?)
(d) use a union:
<xsl:variable name="validAttributeTypeBase"
select="key('allTypes', @type)/xsd:restriction |
xsd:simpleType/xsd:restriction"/>
Option (d) was the last one I thought of but it seems to be the best choice.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Wasiq Shaikh [mailto:wasiq911@xxxxxxxxxxx]
> Sent: 01 August 2007 18:41
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Accessing attribute in a variable with
> conditional value
>
> Hi,
>
> I'm setting a value on a variable using conditions. The
> variable must be a node-set so that I can do some processing with it.
>
> <xsl:variable name="validAttributeType">
> <xsl:if test="key('allTypes', @type)">
> <xsl:copy-of select="key('allTypes',
> @type)/xsd:restriction"/>
> </xsl:if>
> <xsl:if test="xsd:simpleType"
> <xsl:copy-of select="xsd:simpleType/xsd:restriction"/>
> </xsl:if>
> </xsl:variable>
>
> The "xsd:restriction" tag has a "base" attribute that I need
> to access and send to a template as a parameter.
>
> <xsl:call-template name="trimAttribute">
> <xsl:with-param name="attributeName" select="'base'"/>
> <xsl:with-param name="attribute"
> select="$validAttributeType/@base"/>
> </xsl:call-template>
>
> But it gives me a "XSLT Error
> (javax.xml.transform.TransformerException):
> org.apache.xpath.objects.XRTreeFrag" when I try to do
>
> <xsl:with-param name="attribute" select="$validAttributeType/@base"/>
> OR
> <xsl:with-param name="attribute"><xsl:copy-of
> select="$validAttributeType/@base"/></xsl:with-param>
>
> I can print out the variable's contents, which is correct,
> but I can't seem to access the attribute. By the way,
> previously I had this
>
> <xsl:variable name="validAttributeType"
> select="key('allTypes', @type)/xsd:restriction"/>
>
> which works! But adding the conditional messed it up. How can
> I get the same behaviour as the above line in a conditional variable?
>
> I appreciate any help. Thank you!
>
> _________________________________________________________________
> Show Your Messenger Buddies How You Really Feel
> http://www.freemessengeremoticons.ca/?icid=EMENCA122
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Accessing attribute in a , Alan Arnfeld | Thread | [xsl] Identity transform on node-se, Matt Poff |
| Re: [xsl] Accessing attribute in a , Wasiq Shaikh | Date | Re: [xsl] Accessing attribute in a , David Carlisle |
| Month |