当前位置: 首页 > 知识库问答 >
问题:

在xslt样式表输出中保留实体而不使用字符映射

韦宣
2023-03-14

我们哪里做错了?

当我在saxon上使用xslt 2处理此xml时,他:

 <data>
      <grab>Grab me and print me back &quot;</grab>
 </data>

使用此样式表:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:template match="/">
        <xsl:apply-templates select="/data/grab"/>
    </xsl:template>

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

</xsl:stylesheet>

我得到这个输出:

<?xml version="1.0" encoding="UTF-8"?><node>Grab me and print me back "</node>

但我想保留

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:character-map name="specialchar">
        <xsl:output-character character="&quot;" string="&amp;quot;"/>
    </xsl:character-map>
    <xsl:output method="xml" indent="no"  use-character-maps="specialchar"/>
    <xsl:template match="/">
        <xsl:apply-templates select="/data/grab"/>
    </xsl:template>

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

</xsl:stylesheet>

它保留了

这真的有必要吗?难道没有更优雅的选择吗?如果不是,这背后的理由是什么?

共有1个答案

韩捷
2023-03-14

在体系结构上,XSLT将XDM树转换为XDM树,而不是将词法XML转换为词法XML。XDM树不区分

现在肯定有保存实体引用的用例:尤其是语义实体引用,比如

在实际层面上,萨克森无法保留

 类似资料:
  • 有没有一种方法可以避免用户输入的换行符。目前,我只是将用户输入发送到mongoDb并返回该文本。然而,如果我的输入是:“新行”,我的输出将是“新行”。有人能提出解决方案吗?

  • 我正在使用iReport 5.1.0和JasperReports 5.0.0构建一些报告。现在我的麻烦是粗体样式没有出现在pdf输出中。如果我有样式化的文本(例如),粗体部分在报表输出中显示为粗体,但在PDF中不显示。在pdf中设置粗体的唯一方法是强制该元素的pdf字体为粗体字体(例如pdffontname=“helvetica-bold”),但这样会使整个字符串粗体化,并且不允许我通过样式标记来

  • 我有这样的桌子: 我有如下XSLT模板匹配(删除了属性匹配,因为本例不需要它们): 我得到的结果是: THEAD和TBODY应该与COL元素处于同一级别的colgroup中,但我似乎无法让它配合。

  • 问题内容: 如果我的html中包含以下内容: 这在我的CSS样式表中: 是否可以使用javascript / jquery删除所有内联样式并仅保留css样式表指定的样式? 问题答案: 要么 要使其更小一些,请尝试以下操作: 这应该可以加快速度,因为它会检查div是否具有样式属性。 无论哪种方式,如果您有大量的div,这都可能需要一些时间来处理,因此您可能要考虑使用JavaScript以外的其他方法

  • 我想在使用JSOUP的同时保留html实体。下面是一个来自网站的utf-8测试字符串: 如果用utf-8打印解析后的输出,看起来像序列—被转换成一个代码点值为151的字符。 当输出为UTF-8时,有没有一种方法让JSoup保留原始实体?如果我以ascii编码输出: 我会得到: 这正是我要找的。

  • 问题内容: 我正在解析包含数字字符实体字符的XML,例如(但不限于)Java中的(换行符回车<>)。解析时,我将节点的文本内容附加到StringBuffer上,以便稍后将其写到文本文件中。 但是,当我将String写入文件或打印出文件时,这些unicode字符会被解析或转换为换行符/空格。 在Java中遍历XML文件的节点并将文本内容节点存储到String时,如何保留原始的数字字符实体字符符号?