【问题标题】:Using XSLT, How do I display a single space between my two XML elements? &nsbp and spacing do not fix it使用 XSLT,如何在两个 XML 元素之间显示一个空格? &nbsp 和间距不能解决它
【发布时间】:2016-06-23 05:34:23
【问题描述】:

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

姓名:理查德·西蒙斯

但现在,我得到了

姓名:理查德西蒙斯

由于某种原因,我无法在显示中添加空格。

我可以发布完整的代码,但我怀疑间距与我在 XSLT 中如何调用“应用模板”有关。

这是显示名称的 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>

我尝试简单地添加一个空格并包含“&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>

【问题讨论】:

    标签: xml xslt xhtml


    【解决方案1】:

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

    另见:

    Tricky whitespace handling in XSLT

    'HTH,

    【讨论】:

    • 您应该将这些页面的相关部分复制到您的答案中,以防链接失效。
    【解决方案2】:

    要在名字和姓氏之间添加一个空格,您可以使用 &lt;xsl:text&gt; &lt;/xsl:text&gt; -注意元素内部有一个空格-,, concat() fe concat(' ', lastName), OR,您认为合适的两者的任何其他变体。

    <!-- 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>
    

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

    【讨论】:

    • 感谢修复!那么为什么单个间距在两个 xml 元素之间不起作用,但它在常规 HTML 中起作用
    猜你喜欢
    • 2016-12-23
    • 1970-01-01
    • 2016-06-10
    • 2014-05-19
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多