XSLT元素到另一个ID

时间:2014-05-04 13:43:33

标签: xml xslt

我有以下XML代码:(原始XML中有更多的频道和程序,我只是缩短了它)

<radio>
 <channel id="radio1">
  <display-name lang="en">Name of radio 1</display-name>
 </channel>
 <channel id="radio2">
  <display-name lang="en">Name of radio 2</display-name>
 </channel>

 <programme channel="radio1">
  <title lang="cs">Programme 1</title>
 </programme>
 <programme channel="radio1">
  <title lang="cs">Programme 2</title>
 </programme>
 <programme channel="radio2">
  <title lang="cs">Programme 3</title>
 </programme>
 <programme channel="radio2">
  <title lang="cs">Programme 4</title>
 </programme>
</radio>

我需要创建一个XSLT来写入每个频道名称(广播名称1,广播名称2等)以及它的节目标题。 HTML应该如下所示:

Name of radio 1
 Programme 1
 Programme 2
Name of Radio 2
 Programme 3
 Programme 4

但我只是不知道如何使用ID获取程序标题(程序中的通道和通道中的id)。 IDK如何在xslt中连接它。

1 个答案:

答案 0 :(得分:0)

如果您处于当前节点为channel元素的上下文中(例如,在匹配channel的模板中或选择for-each的{​​{1}}中元素)然后你可以找到带有XPath的相应channel元素

programme

/radio/programme[@channel = current()/@id] 为您提供当前current()元素,我们会将channel元素过滤为programme属性与当前频道相匹配的元素channel)。

或者,您可以定义一个key,可以在id

的情况下提取programme元素

channel

然后您可以使用

提取当前频道的匹配程序
<xsl:key name="programmesByChannel" match="programme" use="@channel" />