通过多次变换替换和维护角色实体

2024-03-08

问题:我们的系统中存在各种格式的字符实体(例如:& and &),如果需要的话,我们需要将它们转换为标准 XML 字符实体(&amp < > ' "),然后通过几个单独的转换将它们维护为实体。

给定 XML:

<rootelm>
 <testdata>&amp;apos; &amp;gt; &amp;lt; &amp;quot;</testdata>
</rootelm>

和一个样式表(基于xsl:character-map 来替换特殊字符 https://stackoverflow.com/questions/3207297/xslcharacter-map-to-replace-special-characters):

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
 <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
 <!-- COPY EVERYTHING -->
 <xsl:template match="node() | @*">
  <xsl:copy>
   <xsl:apply-templates select="@* | node()">
    <xsl:sort select="local-name()"/>
   </xsl:apply-templates>
  </xsl:copy>
 </xsl:template>
 <xsl:variable name="quote">
  <xsl:text>&amp;quot;</xsl:text>
 </xsl:variable>
 <xsl:variable name="quote2">
  <xsl:value-of select="string('&quot;')"/>
 </xsl:variable>
 <xsl:template match="text()[contains(.,'&amp;lt;') or contains(.,'&amp;gt;') or contains(.,'&amp;quot;') or contains(.,'&amp;apos;')]">
  <xsl:value-of select='replace(
  replace(
   replace(
    replace(., "&amp;lt;", "&lt;"),
   "&amp;gt;",
   "&gt;"
   ),
  "&amp;apos;",
  "&apos;"
  ),
  $quote,
  $quote2
 )
    ' />
 </xsl:template>
</xsl:stylesheet>

如何将撇号和引号保留为实体(源系统期望/需要它)?

电流输出:

<rootelm> 
   <testdata>' &gt; &lt; "</testdata>
</rootelm>

Use 字符映射表 http://www.w3.org/TR/xslt20/#character-maps :

[定义:字符映射表允许 文本中出现的特定字符 或者最终结果中的属性节点 树被指定的替换 期间的字符串 连载。]

<xsl:character-map name="quotes">
  <xsl:output-character character='"' string="&amp;quot;"/>   
  <xsl:output-character character="'" string="&amp;apos;"/>
</xsl:character-map>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过多次变换替换和维护角色实体 的相关文章

随机推荐

  • 在 Delphi IDE 中生成新的随机 GUID

    如何在 Delphi IDE 中生成随机的新 GUID 我使用的是Delphi 2007 Just press Ctrl Shift G
  • Docker:旧版 --link 参数的等价物是什么

    我需要将我的数据库容器与服务器容器连接 现在我只是对遗留参数感到愤怒 link 效果完美 gt docker run d P name rethinkdb1 rethinkdb gt docker run d link rethinkdb
  • Android:使用 Webview 从资源中加载大图像

    我需要使用 Web 视图从资源中加载大图像 大约 3500 x 3500 像素 我在 Stackoverflow 上做了很多研究 但没有一个答案对我有用 我认为这可能是 Android 4 0 使用资源的问题 我当前的代码如下所示 WebV
  • 具有通用代码的 Git 项目

    我们有几个项目正在进行中 它们共享大部分代码 配置文件 我们使用的框架具有某些目录和文件依赖性 这限制了我们可以隔离公共代码的程度 例如 在 common projectA 和 projectB 之间我们可能有 项目A shared dir
  • java中如何从当前日期减去n天? [复制]

    这个问题在这里已经有答案了 我想从Java中的当前日期减去n天 我怎么做 您不必使用日历 您可以只使用时间戳 Date d initDate intialize your date to any date Date dateBefore n
  • 我的应用程序泄漏了我的可绘制文件夹中没有的随机形状的位图

    我有一个奇怪的内存泄漏问题 我的应用程序不断泄漏Bitmap对象和其他相关对象 例如VectorDrawables AnimationDrawables 我有通过Eclipse Memory AnalyzerGimp 能够恢复泄露的内容Bi
  • 如何使用 dagger 限定符注释来提供不同的 OkHttpClient 构建器?

    我正在尝试使用 dagger 限定符在我的 android 应用程序中提供不同类型的 OkHttpClient Builder 例如 我有两个注释 即 Authorized 和 WithTime 每个注释都应该向客户端构建器添加一些拦截器
  • 如何使用 itextsharp C# 从签名字段中删除有效性未知图标?

    在计算 pdf 的哈希值之前 如何从签名字段中删除有效性未知图标 问号 下面的代码我用来创建签名字段 PdfStamper stamper PdfStamper CreateSignature reader os 0 PdfSignatur
  • Macos 上输出中的 gnuplot pdfcairo 未命名 Type 3 字体

    带有 pdfcairo 终端的 Gnuplot 似乎在字体方面给出了奇怪的行为 其中生成的 pdf 具有未命名的 Type 3 字体 以下是 pdffonts 在输出 pdf 文件上的输出 name type encoding emb su
  • 在Java中将ANSI字符转换为UTF-8

    有没有办法使用 Java 将 ANSI 字符串转换为 UTF 我有一个自定义序列化程序 它使用 DataInputStream 类的 readUTF 和 writeUTF 方法来反序列化和序列化字符串 如果我收到一个以 ANSI 编码的字符
  • setTimeout 无法绑定到“this”原型函数[重复]

    这个问题在这里已经有答案了 我写了一个代码 我想看看 Hello world 每一秒 但我已经undefined我找不到我的错误在哪里 function Greeting message delay this message message
  • 将形状添加到幻灯片并设置格式

    我正在尝试制作下面的 vba 脚本来向 powerpoint 幻灯片添加注释注释 这个想法是 该脚本可用于向幻灯片添加 待检查的注释 因此 我将其设置在一个显示菜单的小插件中 以便添加 TBC TBU TBD 注释 该子系统时不时地显示错误
  • 不是作为 jQuery Deferred 执行的异步函数

    假设我想以同步方式处理一些任务 所以我有这个函数 function executePromiseQueueSync queue var seed Deferred finalPromise finalPromise reduce queue
  • 启用安全辅助紧急模式

    对我来说 实施和学习这是一件非常有趣和新鲜的事情 我的申请有一些要求 为此 我进行了很多搜索 但找不到合适且有价值的东西或链接 所以我在这里发布我的问题 其功能有 1 在三星设备中有Safety Assistance您可以在其中找到菜单Em
  • 简单的多维 C 型数组出现分段错误:11

    const int L 10 std complex
  • cv2.Canny() 是否执行高斯模糊?

    我知道在使用 Canny 检测边缘之前对图像应用高斯模糊非常重要 我的问题是 cv2 Canny 单独进行高斯模糊或者有必要应用cv2 GaussianBlur before cv2 Canny 文档在这一点上并不清楚 回想一下 在 Pyt
  • Pyspark from_unixtime (unix_timestamp) 不转换为时间戳

    我正在使用 Pyspark 和 Python 2 7 我在字符串中有一个日期列 带毫秒 并且想转换为时间戳 这是我到目前为止所尝试过的 df df withColumn end time from unixtime unix timesta
  • Excel VBA 文本框时间验证为 [h]:mm

    我正在开发 VBA Excel 用户窗体 需要以 h mm 格式输入时间 这意味着小时数可以不受限制 并且不会像 hh mm 格式那样在 23 59 之后循环回 0 我在网上搜索过没有结果 这是我当前使用的代码 Private Sub Tx
  • 运行任务时显示 Gradle 控制台

    当我在 Android Stduio 中运行 gradle 任务时 如何显示 gradle 控制台 当我执行任务时 会弹出运行对话框 但控制台不会弹出 我希望能够看到 gradle 控制台 以便可以看到输出 但我不想永久看到 gradle
  • 通过多次变换替换和维护角色实体

    问题 我们的系统中存在各种格式的字符实体 例如 amp and amp amp 如果需要的话 我们需要将它们转换为标准 XML 字符实体 amp lt gt apos quot 然后通过几个单独的转换将它们维护为实体 给定 XML