xsl-list
[Top] [All Lists]

Re: [xsl] Need to find element name of corresponding attribute value

2011-07-15 08:59:28
charlieo0(_at_)comcast(_dot_)net wrote:
I need help finding a method for getting the name of an element based on the 
corresponding ID and IDREF attributes. I cannot use the id() function because 
the project I'm working is converting well-formed XML to DTD compliant XML. The 
id() function doesn't work because there is no DTD that defines ANY attribute 
types. So basically assume the ID attribute is defined as CDATA and not ID.

Here is basically what I'm working from:

<service id="M202-01">
<title>TITLE</title>
<para>See<xref taskid="M202-02"/>.</para>
<para>Stuff</para>
</service>
<remove id="M202-02">
<title>TITLE</title>
<para>Para stuff</para>
</remove>

I need to identify the name of the element that contains the ID value of the the "taskid" 
in<xref>. Once I have that, I can grab the value of the child<title>  element.

Define
  <xsl:key name="el-by-id" match="*" use="@id"/>
(you might want to change the match attribute to a pattern listing those elements you are interested in, instead of matching on any elements with "*").
Then use
  <xsl:template match="xref">
    <xsl:value-of select="key('el-by-id', @taskid)/title"/>
  </xsl:template>

--

        Martin Honnen --- MVP Data Platform Development
        http://msmvps.com/blogs/martin_honnen/

--~------------------------------------------------------------------
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>
--~--

<Prev in Thread] Current Thread [Next in Thread>