在 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 中创建空格 ( ) 的相关文章

  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 为什么 XML 中的 CDATA 语法看起来如此奇怪?

    CDATA 在 XML 中的使用如下
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • 关于 C++ 转换:参数 1 从“[some_class]”到“[some_class]&”没有已知的转换

    我正在研究 C 并且遇到了一个错误 我不知道确切的原因 我已经找到了解决方案 但仍然想知道原因 class Base public void something Base b int main Base b b something Base
  • 将 VSIX 功能添加到 C# 类库

    我有一个现有的单文件生成器 位于 C 类库中 如何将 VSIX 项目级功能添加到此项目 最终目标是编译我的类库项目并获得 VSIX 我实际上是在回答我自己的问题 这与Visual Studio 2017 中的单文件生成器更改 https s
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 如何锁定/密码保护 XML 文件?

    我在 XML 文件中读取和写入数据 我不希望其他人阅读该文件 所以我想为我的文件创建密码或锁定文件 我怎样才能做到这一点 如果不使用加密软件 则无法使用密码保护 XML 文件 XML 文件只是文本 但像 PGP 谷歌搜索 这样的程序应该可以
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分

随机推荐

  • 设置 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