Ruby/NokogiriのXSLTに基づいてXMLを変換しようとしています。
doc = Nokogiri::XML(File.read('some_file.xml'))
xslt = Nokogiri::XSLT(File.read('some_transformer.xslt'))
puts xslt.transform(doc)
しかし失敗します:
I / O警告:外部エンティティ「dateDifference.xsl」のロードに失敗しました
RuntimeError:コンパイルエラー:要素スタイルシート
xsl:exclude-result-prefixes:未定義の名前空間exslコンパイル
エラー:要素のインポートxsl:import:dateDifference.xslをロードできません
おそらく、some_transform.xsltファイルで外部エンティティを使用していることが原因です。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:res="rate.fidelio.6.0" xmlns:inv="rtav.fidelio.4.0" xmlns:aravr="ravr.fidelio.2.0" xmlns:aravl="ravl.fidelio.2.0" xmlns:exslt="http://exslt.org/common" xmlns:date="http://exslt.org/dates-and-times" exclude-result-prefixes="res inv aravr aravl date exsl">
<xsl:import href="dateDifference.xsl" />
...
</xsl:stylesheet>
それを修正する方法はありますか?