1
我尝试本地化Web应用程序中的XSLT模板,并且我想使用实体机制来实现此目的。但是结果文档中的值不会被替换。Nokogiri忽略XSL转换中的实体
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引擎
这里是一个可能的解释。请参阅最后一个答案:http://www.ruby-forum.com/topic/849565 – Casper
这可能是供应商特定的解析器问题。什么是您的XSLT引擎? –
@Sean B. Durkin - Nokogiri(http://nokogiri.org/) – andrykonchin