在 XSL 中创建空格 ( )

2024-03-16

我尝试通过以下方式在 XSL 文档中创建自动间距。

<td><xsl:value-of select="Name/First"/> <xsl:text disable-output-escaping="yes"><![CDATA[&nbsp;]]></xsl:text><xsl:value-of select="Name/Last"/> </td>但是,呈现的 HTML 具有以下形式

<td>John&amp;nbsp;Grisham</td>

知道如何解决这个问题吗?


您面临的直接问题是,虽然 unicode 160 (hex 0xA0)&nbsp;是 HTML 实体,而不是 XML 实体。

Use &#160; or &#xA0;改为不间断空格。

然而,对于更大的问题,即如何处理 XSL 中的空白,答案很简单:使用<xsl:text>.

每次包含任何纯文本时,请将其括在<xsl:text> the text goes here </xsl:text>标签。如果不这样做,下次聪明的文本编辑器重新格式化您的文档时,您将陷入痛苦的境地。

您已经进入了至少一个大陆,或者如果您幸运的话,可能会进入一个痛苦的国家,因为期望 XML/XSL 保留空白。即使是非常了解 XSL 的天才,仍然会因空格处理而遭受县级或至少市级的痛苦。 (自治市级别的痛苦被编码在 XML 规范“2.11 行尾处理”中,其疯狂的设计决定拒绝区分 LF 和 CRLF - 所以没有人可以避免这一点)。

只是为了让您知道会发生什么:这并不容易 - 您可以在没有<xsl:text>标签的时间惊人地长,但如果你接受它,并从一开始就把它们放进去,从长远来看,它会更容易。

错误示例:

  <xsl:element name="MyElem">
      <xsl:attribute name="fullPath">c:\base\Path\here\<xsl:value-of select="../parent/@relPath"/>\<xsl:value-of select="@fileName">
      </xsl:attribute>
  </xsl:element>

右例:

  <xsl:element name="MyElem">
      <xsl:attribute name="fullPath">
          <xsl:text>c:\base\Path\here\</xsl:text>
          <xsl:value-of select="../parent/@relPath"/>
          <xsl:text>\</xsl:text>
          <xsl:value-of select="@fileName">
      </xsl:attribute>
  </xsl:element>

问题是,他们两者产生完全相同的输出.

但其中之一将是在未来的某个时刻搞砸了,是的,可能由尚未出生的人,另一个不会。

简短的解释是这样的:默认情况下,仅包含空白的节点将被忽略(除非您调整选项)。所以这就是仅由以下组成的任何东西CR, LF, TAB and SPACE之间> and <。由非空白文本组成的节点,具有前导和尾随空白,可能具有“折叠”的空白 - 即情绪激动。

所以示例 RIGHT 和这个之间的区别:

  <xsl:element name="MyElem">
      <xsl:attribute name="fullPath">
          c:\base\Path\here\
          <xsl:value-of select="../parent/@relPath"/>
          \
          <xsl:value-of select="@fileName">
      </xsl:attribute>
  </xsl:element>

是一个生成<MyElem fullPath="c:\base\Path\here\relative\path\filename.txt"/>另一个,根据有效的 DOM 选项,生成以下之一:

<MyElem fullPath="c:\base\Path\here\relative\path\filename.txt"/>
<MyElem fullPath="c:\base\Path\here\ relative\path \ filename.txt"/>
<MyElem fullPath="c:\base\Path\here\&#10;relative\path&#10;\&10;filename.txt"/>
<MyElem fullPath="c:\base\Path\here\&#9;&#10;relative\path&#9;&#10;\&#9;&10;&#9;filename.txt"/>

只有其中之一是你想要的......但其中任何一个都可能是正确的取决于有效的选项...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 XSL 中创建空格 ( ) 的相关文章

随机推荐

  • 设置 connect-flash 中间件以供 Passport 使用

    我想访问我的护照策略在回调中指定的消息 如下所示 done null false message No such user 到目前为止我发现这些消息可以通过传递选项来显示failureFlash true进入passport authent
  • Marshmallow PermissionHelper 的 Android Robolectric 单元测试

    我想学习 Robolectric 以便将其用于 Android Marshmallow 应用程序的单元测试 我写了一个PermissionHelper使用一些方法可以使权限处理更容易一些 为了开始对该类进行单元测试 我尝试测试最简单的方法
  • 如何使用 Perl 将带有 -- 的 SQL 注释转换为 #?

    UPDATE 这就是有效的方法 fgrep ircl include sql 我有各种带有 注释的 SQL 文件 我们迁移到最新版本的 MySQL 但它讨厌这些注释 我想用 替换 我正在寻找一种递归的 就地替换的单行代码 这就是我所拥有的
  • pyparsing 和换行符

    我刚开始pyparsing我有换行问题 我的语法是 from pyparsing import newline LineEnd Literal n leaveWhitespace minus Literal plus Literal lpa
  • 将字符串解析为整数抛出 NullpointerException

    Hy 我想将字符串解析为整数 字符串类似于系列的格式 SXXEXXX 守则 应该增加情节 喜欢 S01E01 gt S01E02 另 S01E100 gt S01E101 Code String s episodes get episode
  • pip:从特定目录卸载包

    我使用以下命令将包安装到特定的本地目录中pip install t
  • Three.js 与实例 - 如果没有 FrustumCulling = false 则无法使其工作

    我正在使用 Three js 和实例化 如这个例子 https threejs org examples webgl buffergeometry instancing html 但我遇到了其他人报告的同样问题 对象被随机剪切并不断从相机中
  • 导航时片段生命周期重叠

    我有一个Activity具有多个应用程序Fragments通过使用导航组件进行切换 当我在两个片段之间切换时onCreate and onDestroy 方法似乎有重叠 因此 当片段访问相同的全局对象时 我很难编写初始化和清理片段的代码 导
  • 与杰克逊一起收集未知财产

    我正在使用 Jackson 从 JSON 创建 Java 对象 假设我有一个像这样的 JSON 字符串 a a b b c c 还有一个像这样的 pojo JsonIgnoreProperties ignoreUnknown true pu
  • 获取视图的边距

    如何从活动中获取视图的边距值 视图可以是任何类型 经过一番搜索后 我找到了填充视图的方法 但在 Margin 上找不到任何内容 有人可以帮忙吗 我尝试过这样的事情 ViewGroup LayoutParams vlp view getLay
  • slickgrid 标题的 Colspan 和 rowspan

    我只是想知道是否有一种方法可以为标题提供 colspan rowspan 并具有多个标题行 网格提供了一个辅助标题行 您可以用它来做任何您需要做的事情 检查here https github com mleibman SlickGrid w
  • 数据流中的值错误:GCS 位置无效:无

    我正在尝试从 GCS 存储桶加载数据并将内容发布到 pubsub 和 bigquery 这些是我的管道选项 options PipelineOptions project project temp location gs dataflow
  • 在 angularjs 中格式化日期和时区

    使用 angularjs 1 2 26 我无法将日期输入格式化为所需的时区 这是一个示例 http plnkr co edit CxCqoR3Awcl1NFrCZYjx p preview http plnkr co edit CxCqoR
  • 播放路由语法以忽略 slug 的一部分

    我们想要的基本上是这样的 foo controllers FooController foo 然而这不起作用 我们找到了以下解决方法 foo ignore controllers FooController foo ignore 但这使得该
  • Docker 存储库服务器向 HTTPS 客户端发出 HTTP 响应

    我使用适用于 Windows 的 Docker 工具箱 并且正在尝试参考此文档运行私有 docker 注册表https docs docker com registry deploying https docs docker com reg
  • Windows 安全自定义登录验证

    我正在创建一个 Xaml C 应用程序 我希望它能够弹出登录提示 我想知道是否可以使用 CredUIPromptForWindowsCredentials 显示 Windows 安全对话框 获取输入的用户名和密码 执行自定义验证 如果验证成
  • 10 月 Azure SDK 在插入带有尾随空格的字符串时损坏

    有没有人解决这个问题 使用存储模拟器并将行插入表存储时 如果字段末尾有空格 则行插入会失败 两周前就已经指出了这一点 但我仍然没有看到微软对此的任何更新 有谁知道修复方法吗 微软论坛链接 http social msdn microsoft
  • 如何使用javascript获取html中的元素背景图像

    我想获取使用 css 或元素背景属性设置的所有 html 页面元素的背景图像 我怎样才能使用javascript做到这一点 The getStyle 下面的函数取自http www quirksmode org dom getstyles
  • 重写规则以返回某些 URL 的状态 200

    我希望具有特定路径的 URL 自动返回 200 状态响应 我已尝试以下操作 但当我尝试启动 Apache 时出现错误 第一个错误 RewriteCond 错误的标志分隔符 RewriteEngine On RewriteCond THE R
  • 在 XSL 中创建空格 ( )

    我尝试通过以下方式在 XSL 文档中创建自动间距 td td