1

Web アプリケーションで XSLT テンプレートをローカライズしようとしていますが、エンティティ メカニズムを使用したいと考えています。ただし、結果ドキュメントでは値は代入されません。

Ruby スクリプト

require 'nokogiri'

doc   = Nokogiri::XML(File.read('test.xml'))
xslt  = Nokogiri::XSLT(File.read('test.xsl'))

puts xslt.transform(doc)

XML ドキュメント

<?xml version="1.0" encoding="UTF-8" ?>

<CommonCard>
  <Test/>
</CommonCard>

XSLT スタイルシート

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE xsl:stylesheet [
  <!ENTITY labelHello "hello world!">
]>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output encoding="utf-8" method="xml" />

  <xsl:template match="/">
    &labelHello; 123
  </xsl:template>

</xsl:stylesheet>

これを手に入れたい

<?xml version="1.0" encoding="utf-8"?>
hello world! 123

しかし、今私はこれを手に入れました

<?xml version="1.0" encoding="utf-8"?>
 123

私は何を間違っていますか?

UPD

Nokogiri XMLエンジンを使用しています

4

1 に答える 1

1

これはノコギリの限界に過ぎないと思います。回避策をお勧めします。エンティティの代わりに変数を使用してください...

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="labelHello" select="'hello world!'" />
  <xsl:template match="/">
    <xsl:value-of select="$labelHello" /> 123
  </xsl:template>
</xsl:stylesheet>
于 2012-06-21T08:58:18.237 に答える