3

XSL スタイルシート (Apache Xalan を使用) を使用して、XML を (一種の) HTML に変換します。XML には—、そのままにしておく必要がある のようなエンティティが存在する可能性があります。XML ファイルの冒頭に、これらのエンティティを参照する doctype があります。エンティティを変更せずに残すにはどうすればよいですか?

<!DOCTYPE article [
<!ENTITY mdash "&mdash;"><!-- em dash -->
]>

XMLテキストでSAXParseException: Recursive entity expansion, 'mdash'遭遇したときに教えてくれます。&mdash

4

2 に答える 2

5

The way to define and use the entity is:

<!DOCTYPE xsl:stylesheet [<!ENTITY mdash "&#x2014;">]>
<t>Hello &mdash; World!</t>

When processed with the simplest possible XSLT stylesheet:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>
</xsl:stylesheet>

The correct output (containing mdash) is produced:

Hello — World!

Important:

In XSLT 2.0 it is possible to use the <xsl:character-map> instruction so that certain, specified characters are represented by entities. In this particular case:

<xsl:stylesheet   version="2.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
  <xsl:output omit-xml-declaration="yes" 
    use-character-maps="mdash"/>
  <xsl:character-map name="mdash">
    <xsl:output-character character="&#x2014;" string="&amp;mdash;" />
  </xsl:character-map>

</xsl:stylesheet>

when the above transformation is applied on the same XML document (already shown above), the output is:

Hello &mdash; World!
于 2010-04-28T13:22:43.590 に答える
1
于 2010-04-28T13:21:36.833 に答える