我有以下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中连接它。
答案 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" />