我需要从属性中读取图像的路径。包含此属性的元素的路径仅由另一个元素的另一个属性引用。也就是说,我在一个元素中有一个ID,它引用另一个ID,其元素中包含我所需路径的属性。我想将路径用作html标记中的属性。
xml source
<root>
<a lot of nodes>
<relation id="path_1" path="path/to/image1">
<relation id="path_2" path="path/to/image2">
...
<more nodes>
<reference path="path_1">
<reference path="path_2>
...
</root>
所需的输出(xslt片段,类似这样)
<xsl:template match="path/to/reference">
<img src="{@path}>
<xsl:apply-templates>
</xsl:template>
所需的输出(html代码段)
<img src="path/to/image1>
...
<img src="path/to/image2>
如何使用元素中的ID&#34;引用&#34;从元素&#34;关系&#34;?读取ID的值
答案 0 :(得分:1)
请考虑在此使用xsl:key
(这必须作为xsl:stylesheet
的直接子项放在您的样式表中):
<xsl:key name="relations" match="relation" use="@id" />
然后,在匹配reference
的模板中,您可以执行此操作
<xsl:template match="reference">
<img src="{key('relations', @path)/@path}" />
</xsl:template>
答案 1 :(得分:0)
可以满足您需求的模板
<xsl:template match="relation[@id = ../reference/@path]">
<img src="{@path}">
<xsl:apply-templates />
</img>
</xsl:template>
它的输出是:
<img src="path/to/image1"/>
<img src="path/to/image2"/>
另一种方式是:
<xsl:template match="reference[@path = ../relation/@id]">
<img src="{../relation/@path}">
<xsl:apply-templates />
</img>
</xsl:template>
产生相同的输出。