1

我有一个输入 XML

<values xsi:type="xsd:string">&lt;Test objectgroupNr="001"/&gt;&lt;bezeichnung&gt;A&amp;amp;B &lt;/bezeichnung&gt;</values>

其中包含我想要转换为“普通”XML 编码的 HTML 编码字符:

<values xsi:type="xsd:string">
        <Test objectgroupNr="001"/>
        <bezeichnung>A&amp;B</bezeichnung>
</values>

我可以改变一些字符

<xsl:character-map name="fischer">
            <xsl:output-character character="&lt;" string="&lt;"/>
            <xsl:output-character character="&gt;" string="&gt;"/>
</xsl:character-map>      
<xsl:output method="xml" use-character-maps="fischer"/>

但输入所有可能的特殊字符(如 Ä、Ü、ß、é 等)似乎不是一个好主意……

这可以使用 XSLT 以简单的方式完成吗?转换发生在使用 Saxon 8.9 的 Sonic ESB 环境中。

4

1 回答 1

1

根据http://www.saxonica.com/documentation8.9/extensions/functions/parse.html支持扩展功能,因此您应该可以使用例如

<xsl:template match="values">
  <xsl:copy>
    <xsl:copy-of select="@*"/>
    <xsl:copy-of select="saxon:parse(concat('&lt;root&gt;', ., '&lt;/root&gt;'))/*/node()"/>
  </xsl:copy>
</xsl:template>

您将xmlns:saxon="http://saxon.sf.net/"作为名称空间声明放入样式表的位置。

于 2013-02-19T15:21:42.470 回答