我正在尝试获取具有多个属性的节点的airings / mediafile / startTime值。
以下是XML的摘录:
<show epgId="DT523214136">
<title>America Reframed</title>
<description>9-Man Teams for this a competitive Chinese-American sport prepare for the national championship in Boston.</description>
<airing channelId="129" duration="7200" sageDbId="6422008" startTime="2017-01-25T01:00:00.00Z">
<manualRecord/>
<recordSchedule duration="7200" startTime="2017-01-25T01:00:00.00Z"/>
<mediafile duration="7200" sageDbId="6423032" startTime="2017-01-25T01:00:00.02Z" type="TV">
<segmentList>
<segment duration="7200" filePath="E:\Record\AmericaReframed-6422008-0.mpg" startTime="2017-01-25T01:00:00.02Z"/>
</segmentList>
</mediafile>
</airing>
</show>
这就是我所拥有的。我的startTime没有输出。我已经尝试了一切,但xsl让我感到困惑和晦涩难懂。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:user="urn:my-scripts">
<xsl:template match="/">
<html>
<body>
<h2></h2>
<table WIDTH="100%" border="1" style="font-family:arial; font-size: 13px;" >
<tr bgcolor="#9acd32">
<th style="text-align:left">Title</th>
<th style="text-align:left">Description</th>
<th style="text-align:left">Category</th>
<th style="text-align:left">Date</th>
</tr>
<xsl:for-each select="sageShowInfo/showList/show">
<xsl:sort select="category"/>
<xsl:sort select="title"/>
<tr>
<td width="30%"><xsl:attribute name="STYLE">color:A50F4B</xsl:attribute><xsl:value-of select="title"/>: <xsl:value-of select="episode"/></td>
<td><xsl:value-of select="description"/></td>
<td><xsl:value-of select="category"/> </td>
<xsl:comment>this doesn't work: </xsl:comment>
<xsl:for-each select="airing">
<td width="10%"><xsl:value-of select="substring(mediafile/startTime,1,10)"/></td>
</xsl:for-each>
<xsl:comment>-------</xsl:comment>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:0)
属性引用以@
为前缀,因此它应该是
...mediafile/@startTime...
答案 1 :(得分:0)
此语句试图在mediafile元素
中选择startTime元素的内部文本<xsl:value-of select="substring(mediafile/startTime,1,10)"/>
相反,您应该选择mediafile元素的startTime属性:
<mediafile duration="7200" sageDbId="6423032" startTime="2017-01-25T01:00:00.02Z" ...
所以你会使用:
<xsl:value-of select="substring(mediafile/@startTime,1,10)"/>