使用XSLT,如何在两个XML元素之间显示单个空格? & nsbp和spacing不会修复它

时间:2016-03-09 01:51:22

标签: xml xslt xhtml

我想在名字和姓氏之间显示一个空格,以便输出显示

姓名: Richard Simmons

但是现在,我正在

姓名: RichardSimmons

出于某种原因,我所做的一切都无法在显示屏上添加空间。

我可以发布完整的代码,但我怀疑间距与我在XSLT中调用“apply-templates”的方式有关。

这是显示名称

的XSLT
<xsl:template match="scout">
<div style="border-style:solid; width: 60%; margin: 0% 0% 20px 35%;">
  <!--NAME-->
  <p style="font-weight: bold">
    Name: <span style="font-weight: normal"><xsl:apply-templates select="firstName"/></span><!--I want to put a space here-->
          <span style="font-weight: normal"><xsl:apply-templates select="lastName"/></span>
  </p>
<!-- More stuff-->
</div>
</xsl:template>

<xsl:template match="firstName">
    <xsl:value-of select="node()"/> 
</xsl:template>

<xsl:template match="lastName">
    <xsl:value-of select="node()"/>
</xsl:template>

我尝试过简单地添加空格并包含“&amp; nbsp”但没有成功。

编辑:如果有人感兴趣的相关XML

<bsa>
  <council name="Movies">
    <troop name="Pixar" number="a113">
      <scout>
        <firstName>Philip</firstName>
        <lastName>Sherman</lastName>
        <address>
          <street>42 Wallaby Way</street>
          <city>Sydney</city>
          <state>New South Wales</state>
        </address>
        <phone>77437626</phone>
        <rank date-earned="2004">Eagle</rank>
        <meritbadge date-earned="2004">Fish in my hair!</meritbadge>
      </scout>
    </troop>
  </council>
  </bsa>

2 个答案:

答案 0 :(得分:1)

您可能需要尝试XML-中描述的section about whitespace stripping或XSLT相关功能,以及有关它们的XSLT处理器文档。

另见:

Tricky whitespace handling in XSLT

&#39; HTH,

答案 1 :(得分:1)

要在名字和姓氏之间添加空格,您可以使用 <xsl:text> </xsl:text> -notice元素内的空格, OR < / strong>, concat() fe concat(' ', lastName) ,您认为合适的两种变体。

<!-- example using xsl:text -->
<xsl:template match="lastName">
    <xsl:text> </xsl:text>
    <xsl:value-of select="."/>
</xsl:template>

<!-- example using concat() -->
<xsl:template match="lastName">
    <xsl:value-of select="concat(' ', .)"/>
</xsl:template>

另外,请注意我在上面显示的两个示例中如何使用.来引用当前上下文元素。