У меня есть карта книг DITA, где я храню пути к изображениям:
<bookmap>
<bookmeta>
<data id="productLogo">
<image href="images/_notrans/frontcover/productLogo.svg" />
</data>
<data id="productPhoto" >
<image href="images/_notrans/frontcover/productPhoto.jpg" />
</data>
</bookmeta>
</bookmap>
Затем я пытаюсь получить значения href по данным [@id]:
<xsl:variable name="productLogo"><xsl:value-of select="//data[@id='productLogo']/image/@href" /></xsl:variable>
<xsl:variable name="productPhoto"><xsl:value-of select="//data[@id='productPhoto']/image/@href" /></xsl:variable>
(Эти выражения XPath совпадают с href, когда я проверяю свою карту книг в Oxygen.)
Во время преобразования я вывожу:
<xsl:message>productPhoto: <xsl:value-of select="$productPhoto"/></xsl:message>
Значение всегда пусто.
Однако все работает, как и ожидалось, если я заменю атрибут id числами:
<xsl:variable name="productLogo"><xsl:value-of select="//data[1]/image/@href" /></xsl:variable>
<xsl:variable name="productPhoto"><xsl:value-of select="//data[2]/image/@href" /></xsl:variable>
Что я делаю неправильно, что мешает использовать @id="whatever"?