我有一个存储图像路径的 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>
然后我尝试通过 data[@id] 获取 href 值:
<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>
(当我在 Oxygen 中测试我的 bookmap 时,这些 XPath 表达式与 href 匹配。)
在转换期间我输出:
<xsl:message>productPhoto: <xsl:value-of select="$productPhoto"/></xsl:message>
value-of 始终为空。
但是,如果我用数字替换 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"?