Thomas J.S.: id()-Umkehrung? Alle Elemente, die in IDREFS gesuchte ID haben?

Beitrag lesen

Hallo Andreas,

Gibt es eine Umkehrfunktion zu id()?
Also eine Funktion, die alle Elemente liefert, die in einem per IDREFS deklarierten Attribut eine gegebene ID haben?

Indirekt. ;-)

Gibt es eine _sauberere_ Lösung dafür? Also eine, die mit beliebigen id-Werten funktioniert?

Ja:
<xsl:key name="patizip2event" match="participant" use="id(@events)/@id" />

....

<xsl:template match="event">
    <h3><xsl:value-of select="@name"/></h3>
    <ul>
        <xsl:apply-templates select="key('patizip2event', @id)" mode="byevent"/>
    </ul>
</xsl:template>

<xsl:template match="participant" mode="byevent">
    <li><xsl:value-of select="@name"/></li>
</xsl:template>

----------------------------
liefert :

<h3>bla</h3>
      <ul>
         <li>Alpha</li>
      </ul>

<h3>blubb</h3>
      <ul>
         <li>Bravo</li>
         <li>Charlie</li>
      </ul>

<h3>laber</h3>
      <ul>
         <li>Alpha</li>
         <li>Charlie</li>
      </ul>

Grüße
Thomas