【问题标题】:Double quotes are appearing in XML declaration after an XSLT transformation instead of single quotesXSLT 转换后 XML 声明中出现双引号而不是单引号
【发布时间】:2017-06-27 16:08:06
【问题描述】:

在我的 java 程序中,我使用下面的 XSLT 代码来转换 xmls:

`

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="*[descendant::text() or descendant-or-self::*/@*[string()]]">
    <xsl:copy>
        <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="@*[string()]">
    <xsl:copy/>
</xsl:template>

</xsl:stylesheet>

`

这正在正确执行所需的转换,但它通过插入双引号 &lt;?xml version="1.0" encoding="UTF-8"?&gt; 而不是原来的单引号 &lt;?xml version='1.0' encoding='UTF-8'?&gt; 来更改 XML 声明 我想知道如何在格式化的 xml 中保留这些单引号!

【问题讨论】:

  • 这两个声明是完全相同的 XML,所以它没有改变任何东西。
  • @jon-hanna 我明白这一点,但是在响应格式化后我有严格的 java 代码转换。这就是我想保留单引号的原因。有没有办法做到这一点?
  • @SaurabhBhoomkar,那是什么样的“严格的 Java 代码转换”?如果您使用 XML 工具处理 XML,那么他们当然不会抱怨 XML 声明中的引号字符是双引号。 XSLT 处理器不保留任何引号字符,无论是 XML 声明(甚至不是其数据模型的一部分)还是 XML 属性中的引号字符,它使用 XML 解析器将 XML 输入解析为输入树,将其转换为结果树并序列化结果树。
  • 听起来您的“严格的 java 代码转换”太严格了,因为它们需要使用特定的 XML 子集。这是非常糟糕的做法。

标签: xml xslt


【解决方案1】:

XSLT 处理器通常不提供对其结果序列化程序使用的引号的控制。

但无论如何,XML 中的差异并不重要。 XML 处理器、工具和库不会关心 ' 与 " 周围的属性值,您也不应该关心。

【讨论】:

    猜你喜欢
    • 2017-07-09
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 1970-01-01
    相关资源
    最近更新 更多