RE: [xsl] Numbered Elements

Subject: RE: [xsl] Numbered Elements
From: "Jack Cane" <jwcane@xxxxxxxxxxx>
Date: Sat, 3 May 2003 13:27:20 -0400
Michael,

So, the key runs independent of the number element, and just picks up all
occurrences of  "Equation", in order, and returns the key value for the
matched IdRef value?

I added items shown below. The result is a blank.

<xsl:key name="kEqn" match="Equation" use="Target" />

<xsl:template match="etd:xRef">
	<xsl:apply-templates select="key('kEqn', etd:RefElemID)"/>
</xsl:template>

Equation and Target are both elements declared within the etd namespace. I
tried the template with and without etd: prefixes.

tks,

jwc

-----Original Message-----
From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
[mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of Michael Kay
Sent: Saturday, May 03, 2003 11:02 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] Numbered Elements

> Still new to XML/XSLT, I am trying to get my arms around the
> numbering methods in XML. Believe I have succeeded in
> auto-numbering figures, equations, tables, etc. Now I need to
> refer to an element by number. From textbooks and online
> reading I have the following:
>
> An element Equation of type EquationType:
>    <xs:complexType name="EquationType">
>       <xs:element name="Expression" type="xs:string"/>
>       <xs:element name="Target" type="xs:ID" use="required" />
>    </xs:complexType>
>
> An element xRef of type xRefType:
>    <xs:complexType name="xRefType">
>       <xs:sequence>
>          <xs:element name="RefElemType" type="xs:string"/>
>          <xs:element name="RefElemID" type="xs:IDREF"/>
>       </xs:sequence>
>    </xs:complexType>
>
> The Transform template of xRef is
>    <xsl:template match="etd:xRef">
>       <xsl:apply-templates select="number[@Target='etd:RefElemID']" />
>    </xsl:template>
>
> Instead of the number of the equation having the indicated
> target value, the result is a blank. There are no error messages.
>
You have tried to select a child element called "number" and there isn't
one. If there were one, you would be selecting it only if its @Target
attribute were equal to the string "etd:RefElemId". But Target is not an
attribute, it is an element, and the string is not a string, it is an
element name - so you seem pretty confused.

I think you want

<xsl:key name="k" match="Equation" use="Target"/>

then

<xsl:apply-template select="key('k', etd:RefElemId)"/>

though I'm guessing wildly about the namespace.

Michael Kay


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread