获取id引用的标记值

时间:2017-01-31 01:11:29

标签: xml xslt transformation idref

我试图获取idref引用的元素标记的值。

<ksiazka id="k2">
    <title> title 1 </title>
    <wydawnictwo idref="wyd1"/>
</ksiazka>

<wyd id="wyd1">
    <name>Zielona Sowa</name>
</wyd>

获得&lt;的标题ksiazka&gt;我所要做的就是

<xsl:template match="ksiazka">
    <xsl:value-of select "./title"/>

但是如何获得&lt;名称&gt;超出&lt; wyd&gt;?有什么建议吗?

2 个答案:

答案 0 :(得分:1)

好的,我想出了怎么做。

<xsl:key name = "wydawnictwoKEY" match= "wyd" use = "@id" />

<xsl:template match="wydawnictwo">
        <xsl:copy>
            <xsl:value-of select="key('wydawnictwoKEY', @idref)/name"/>
        </xsl:copy>
</xsl:template>             

然后

    <xsl:apply-templates select="wydawnictwo"/>

答案 1 :(得分:0)

XSLT有build-in mechanism来解决交叉引用。首先在样式表的顶层定义

<xsl:key name="pub" match="wyd" use="@id" />

然后你可以使用:

<xsl:value-of select="key('pub', wydawnictwo/@idref)/name"/>

wyd/name的上下文中获取相应的ksiazka

在此处查看演示:http://xsltransform.net/94AbWBE