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で簡単に実行できますか?変換は、Saxon8.9を使用するSonicESBの環境で行われます。

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 に答える