xslt元素的前10个字符

时间:2014-06-13 08:38:59

标签: xml xslt substring

我尝试创建一个xslt代码,将元素(Fetchdate)的文本缩减为前10个字符。 我相信正确的功能是" substring",但不幸的是我不能让它工作!

我的起源xml是:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<Staff>
<File>staff.php</File>
<Fetchdate>2014-06-13 10:10:11</Fetchdate>
<IdTeam>614</IdTeam>
<StaffMechanicians>20</StaffMechanicians>
<StaffTechnics>6</StaffTechnics>
<StaffPR>12</StaffPR>
<StaffObservers>2</StaffObservers>
<StaffFitnessCoaches>4</StaffFitnessCoaches>
<StaffRepairman>10</StaffRepairman>
<StaffTeamSpirit>20</StaffTeamSpirit>
</Staff>

预期的xml输出:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<Staff>
<File>staff.php</File>
<Fetchdate>2014-06-13</Fetchdate>
<IdTeam>614</IdTeam>
<StaffMechanicians>20</StaffMechanicians>
<StaffTechnics>6</StaffTechnics>
<StaffPR>12</StaffPR>
<StaffObservers>2</StaffObservers>
<StaffFitnessCoaches>4</StaffFitnessCoaches>
<StaffRepairman>10</StaffRepairman>
<StaffTeamSpirit>20</StaffTeamSpirit>
</Staff>

谁能帮我生成xslt代码? 感谢。

1 个答案:

答案 0 :(得分:4)

表达式应为:

substring(/Staff/Fetchdate, 1, 10)

你必须记住,在Xpath中以1而不是0来表示。

将其放入模板匹配中:

<xsl:template match="Staff/Fetchdate">
  <xsl:value-of select="substring(., 1, 10)"/>
</xsl:template>

在这种情况下,另一种可能性是substring-before()

<xsl:template match="Staff/Fetchdate">
  <xsl:value-of select="substring-before(., ' ')"/>
</xsl:template>