Xml 是否可以在模板调用中显示已知同级的值?
这是一段精简的XML片段:Xml 是否可以在模板调用中显示已知同级的值?,xml,xslt,Xml,Xslt,这是一段精简的XML片段: <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="WEEK-AYFM.xsl"?> <MeetingWorkBook> <Meeting> <LAC CircuitVisit="0"> <SongEnd Title="“This Is the Way”" StartTime1
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="WEEK-AYFM.xsl"?>
<MeetingWorkBook>
<Meeting>
<LAC CircuitVisit="0">
<SongEnd Title="“This Is the Way”" StartTime12="8:55" StartTime24="20:55" EndTime12="9:00" EndTime24="21:00">65</SongEnd>
<PrayerEnd>Brother 8</PrayerEnd>
</LAC>
</Meeting>
</MeetingWorkBook>
65
兄弟八
这是一个调用XSL的过程:
<xsl:template match="LAC">
<table class="tableLAC">
<xsl:apply-templates select="SongEnd">
<xsl:with-param name="strPrayerEnd">
<xsl:value-of select="PrayerEnd"/>
</xsl:with-param>
</xsl:apply-templates>
</table>
</xsl:template>
<xsl:template match="SongEnd">
<xsl:param name="strPrayerEnd" />
<tr>
<td class="cellTime">
<xsl:value-of select="@EndTime24"/>
</td>
<td>
<div class="floatRight">
Prayer:
</div>
<span class="bulletLAC">•</span>
<span class="textSongLabel">Song</span>
<span class="textSongNumber">
<xsl:value-of select="."/>
</span>
</td>
<td>
<xsl:value-of select="$strPrayerEnd"/>
</td>
</tr>
</xsl:template>
祈祷:
•
歌曲
SongEnd模板是否可以直接访问rajerend值,而无需我将其作为参数进行传递?在与
SongEnd
匹配的模板中,上下文节点是SongEnd
元素。然后,可以使用简单的XPath表达式选择模板中与上下文节点相关的rajerend
节点
例如,如果rajerend
始终是SongEnd
的以下兄弟姐妹,则您可以编写
<xsl:value-of select="following-sibling::PrayerEnd"/>
不使用参数。在匹配
SongEnd
的模板中,上下文节点是SongEnd
元素。然后,可以使用简单的XPath表达式选择模板中与上下文节点相关的rajerend
节点
例如,如果rajerend
始终是SongEnd
的以下兄弟姐妹,则您可以编写
<xsl:value-of select="following-sibling::PrayerEnd"/>
不使用参数。正如我在评论中所说的,我相信您使这个问题变得比需要的更复杂。以下任一样式表将产生与当前样式表相同的结果: 1.
<xsl:template match="LAC">
<table class="tableLAC">
<tr>
<td class="cellTime">
<xsl:value-of select="SongEnd/@EndTime24"/>
</td>
<td>
<div class="floatRight">
Prayer:
</div>
<span class="bulletLAC">•</span>
<span class="textSongLabel">Song</span>
<span class="textSongNumber">
<xsl:value-of select="SongEnd"/>
</span>
</td>
<td>
<xsl:value-of select="PrayerEnd"/>
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="LAC">
<table class="tableLAC">
<tr>
<xsl:apply-templates select="SongEnd"/>
<td>
<xsl:value-of select="PrayerEnd"/>
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="SongEnd">
<td class="cellTime">
<xsl:value-of select="@EndTime24"/>
</td>
<td>
<div class="floatRight">
Prayer:
</div>
<span class="bulletLAC">•</span>
<span class="textSongLabel">Song</span>
<span class="textSongNumber">
<xsl:value-of select="."/>
</span>
</td>
</xsl:template>
<xsl:template match="LAC">
<table class="tableLAC">
<tr>
<xsl:apply-templates/>
</tr>
</table>
</xsl:template>
<xsl:template match="SongEnd">
<td class="cellTime">
<xsl:value-of select="@EndTime24"/>
</td>
<td>
<div class="floatRight">
Prayer:
</div>
<span class="bulletLAC">•</span>
<span class="textSongLabel">Song</span>
<span class="textSongNumber">
<xsl:value-of select="."/>
</span>
</td>
</xsl:template>
<xsl:template match="PrayerEnd">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
祈祷:
•
歌曲
2.
<xsl:template match="LAC">
<table class="tableLAC">
<tr>
<td class="cellTime">
<xsl:value-of select="SongEnd/@EndTime24"/>
</td>
<td>
<div class="floatRight">
Prayer:
</div>
<span class="bulletLAC">•</span>
<span class="textSongLabel">Song</span>
<span class="textSongNumber">
<xsl:value-of select="SongEnd"/>
</span>
</td>
<td>
<xsl:value-of select="PrayerEnd"/>
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="LAC">
<table class="tableLAC">
<tr>
<xsl:apply-templates select="SongEnd"/>
<td>
<xsl:value-of select="PrayerEnd"/>
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="SongEnd">
<td class="cellTime">
<xsl:value-of select="@EndTime24"/>
</td>
<td>
<div class="floatRight">
Prayer:
</div>
<span class="bulletLAC">•</span>
<span class="textSongLabel">Song</span>
<span class="textSongNumber">
<xsl:value-of select="."/>
</span>
</td>
</xsl:template>
<xsl:template match="LAC">
<table class="tableLAC">
<tr>
<xsl:apply-templates/>
</tr>
</table>
</xsl:template>
<xsl:template match="SongEnd">
<td class="cellTime">
<xsl:value-of select="@EndTime24"/>
</td>
<td>
<div class="floatRight">
Prayer:
</div>
<span class="bulletLAC">•</span>
<span class="textSongLabel">Song</span>
<span class="textSongNumber">
<xsl:value-of select="."/>
</span>
</td>
</xsl:template>
<xsl:template match="PrayerEnd">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
祈祷:
•
歌曲
3.
<xsl:template match="LAC">
<table class="tableLAC">
<tr>
<td class="cellTime">
<xsl:value-of select="SongEnd/@EndTime24"/>
</td>
<td>
<div class="floatRight">
Prayer:
</div>
<span class="bulletLAC">•</span>
<span class="textSongLabel">Song</span>
<span class="textSongNumber">
<xsl:value-of select="SongEnd"/>
</span>
</td>
<td>
<xsl:value-of select="PrayerEnd"/>
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="LAC">
<table class="tableLAC">
<tr>
<xsl:apply-templates select="SongEnd"/>
<td>
<xsl:value-of select="PrayerEnd"/>
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="SongEnd">
<td class="cellTime">
<xsl:value-of select="@EndTime24"/>
</td>
<td>
<div class="floatRight">
Prayer:
</div>
<span class="bulletLAC">•</span>
<span class="textSongLabel">Song</span>
<span class="textSongNumber">
<xsl:value-of select="."/>
</span>
</td>
</xsl:template>
<xsl:template match="LAC">
<table class="tableLAC">
<tr>
<xsl:apply-templates/>
</tr>
</table>
</xsl:template>
<xsl:template match="SongEnd">
<td class="cellTime">
<xsl:value-of select="@EndTime24"/>
</td>
<td>
<div class="floatRight">
Prayer:
</div>
<span class="bulletLAC">•</span>
<span class="textSongLabel">Song</span>
<span class="textSongNumber">
<xsl:value-of select="."/>
</span>
</td>
</xsl:template>
<xsl:template match="PrayerEnd">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
祈祷:
•
歌曲
正如我在评论中所说的,我相信你让事情变得比实际需要的更复杂了。以下任一样式表将产生与当前样式表相同的结果:
1.
<xsl:template match="LAC">
<table class="tableLAC">
<tr>
<td class="cellTime">
<xsl:value-of select="SongEnd/@EndTime24"/>
</td>
<td>
<div class="floatRight">
Prayer:
</div>
<span class="bulletLAC">•</span>
<span class="textSongLabel">Song</span>
<span class="textSongNumber">
<xsl:value-of select="SongEnd"/>
</span>
</td>
<td>
<xsl:value-of select="PrayerEnd"/>
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="LAC">
<table class="tableLAC">
<tr>
<xsl:apply-templates select="SongEnd"/>
<td>
<xsl:value-of select="PrayerEnd"/>
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="SongEnd">
<td class="cellTime">
<xsl:value-of select="@EndTime24"/>
</td>
<td>
<div class="floatRight">
Prayer:
</div>
<span class="bulletLAC">•</span>
<span class="textSongLabel">Song</span>
<span class="textSongNumber">
<xsl:value-of select="."/>
</span>
</td>
</xsl:template>
<xsl:template match="LAC">
<table class="tableLAC">
<tr>
<xsl:apply-templates/>
</tr>
</table>
</xsl:template>
<xsl:template match="SongEnd">
<td class="cellTime">
<xsl:value-of select="@EndTime24"/>
</td>
<td>
<div class="floatRight">
Prayer:
</div>
<span class="bulletLAC">•</span>
<span class="textSongLabel">Song</span>
<span class="textSongNumber">
<xsl:value-of select="."/>
</span>
</td>
</xsl:template>
<xsl:template match="PrayerEnd">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
祈祷:
•
歌曲
2.
<xsl:template match="LAC">
<table class="tableLAC">
<tr>
<td class="cellTime">
<xsl:value-of select="SongEnd/@EndTime24"/>
</td>
<td>
<div class="floatRight">
Prayer:
</div>
<span class="bulletLAC">•</span>
<span class="textSongLabel">Song</span>
<span class="textSongNumber">
<xsl:value-of select="SongEnd"/>
</span>
</td>
<td>
<xsl:value-of select="PrayerEnd"/>
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="LAC">
<table class="tableLAC">
<tr>
<xsl:apply-templates select="SongEnd"/>
<td>
<xsl:value-of select="PrayerEnd"/>
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="SongEnd">
<td class="cellTime">
<xsl:value-of select="@EndTime24"/>
</td>
<td>
<div class="floatRight">
Prayer:
</div>
<span class="bulletLAC">•</span>
<span class="textSongLabel">Song</span>
<span class="textSongNumber">
<xsl:value-of select="."/>
</span>
</td>
</xsl:template>
<xsl:template match="LAC">
<table class="tableLAC">
<tr>
<xsl:apply-templates/>
</tr>
</table>
</xsl:template>
<xsl:template match="SongEnd">
<td class="cellTime">
<xsl:value-of select="@EndTime24"/>
</td>
<td>
<div class="floatRight">
Prayer:
</div>
<span class="bulletLAC">•</span>
<span class="textSongLabel">Song</span>
<span class="textSongNumber">
<xsl:value-of select="."/>
</span>
</td>
</xsl:template>
<xsl:template match="PrayerEnd">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
祈祷:
•
歌曲
3.
<xsl:template match="LAC">
<table class="tableLAC">
<tr>
<td class="cellTime">
<xsl:value-of select="SongEnd/@EndTime24"/>
</td>
<td>
<div class="floatRight">
Prayer:
</div>
<span class="bulletLAC">•</span>
<span class="textSongLabel">Song</span>
<span class="textSongNumber">
<xsl:value-of select="SongEnd"/>
</span>
</td>
<td>
<xsl:value-of select="PrayerEnd"/>
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="LAC">
<table class="tableLAC">
<tr>
<xsl:apply-templates select="SongEnd"/>
<td>
<xsl:value-of select="PrayerEnd"/>
</td>
</tr>
</table>
</xsl:template>
<xsl:template match="SongEnd">
<td class="cellTime">
<xsl:value-of select="@EndTime24"/>
</td>
<td>
<div class="floatRight">
Prayer:
</div>
<span class="bulletLAC">•</span>
<span class="textSongLabel">Song</span>
<span class="textSongNumber">
<xsl:value-of select="."/>
</span>
</td>
</xsl:template>
<xsl:template match="LAC">
<table class="tableLAC">
<tr>
<xsl:apply-templates/>
</tr>
</table>
</xsl:template>
<xsl:template match="SongEnd">
<td class="cellTime">
<xsl:value-of select="@EndTime24"/>
</td>
<td>
<div class="floatRight">
Prayer:
</div>
<span class="bulletLAC">•</span>
<span class="textSongLabel">Song</span>
<span class="textSongNumber">
<xsl:value-of select="."/>
</span>
</td>
</xsl:template>
<xsl:template match="PrayerEnd">
<td>
<xsl:value-of select="."/>
</td>
</xsl:template>
祈祷:
•
歌曲
请澄清:LAC
能否包含多个SongEnd
和/或rajerend
?如果是,请解释它们在LAC
元素中的排列方式。每个元素只有一个。那么,您为什么不在LAC
的上下文中处理这个问题呢?显然,您的表只有一行,所以为什么不在第一个模板中创建它呢?如果您愿意的话,可以将模板应用于两个子项,并让每个子项创建一个单元格。没有必要这么复杂地跳来跳去。嗨。你能告诉我你的意思吗?请注意,我将在LAC节点中有其他数据。我只是将其删减以隔离我的问题。请澄清:LAC
是否可以包含多个SongEnd
和/或rajerend
?如果是,请解释它们在LAC
元素中的排列方式。每个元素只有一个。那么,您为什么不在LAC
的上下文中处理这个问题呢?显然,您的表只有一行,所以为什么不在第一个模板中创建它呢?如果您愿意的话,可以将模板应用于两个子项,并让每个子项创建一个单元格。没有必要这么复杂地跳来跳去。嗨。你能告诉我你的意思吗?请注意,我将在LAC节点中有其他数据。我只是把它删减以隔离我的问题。这很有效,谢谢。PrayError节点将始终跟随SongEnd节点。@ AndrewTruckle,如果这解决了您的问题,请考虑将答案标记为接受(投票摇杆下的勾选框)。它将帮助未来的用户更快地找到答案。这很有效,谢谢。PrayError节点将始终跟随SongEnd节点。@ AndrewTruckle,如果这解决了您的问题,请考虑将答案标记为接受(投票摇杆下的勾选框)。这将帮助未来的用户更快地找到答案。谢谢。有道理。我使用了选项2。我会看看能不能在别处做。谢谢。有道理。我使用了选项2。我会看看我是否能在其他地方做到这一点。