Nokogiri 忽略 XSL 转换中的实体



我尝试在 Web 应用程序中本地化 XSLT 模板,我想为此使用实体机制。但值不会在结果文档中替换。

拼音脚本

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 引擎

我怀疑这只是Nokogiri的限制。我建议一个解决方法:使用变量而不是实体,就像这样......

<?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>

相关内容

  • 没有找到相关文章

最新更新