我想在XML文件的xi:include
節點的href鏈接中使用環境變量。目前Perl XInclude解析器不支持任何變量,但只支持絕對路徑。有沒有一種方法可以解決這個問題? 例如,我的xi:include
節點將是這樣的:如何在xi中使用環境變量:包含XML文件?
<xi:include href="$GLOBAL_ROOT/alternative.xml">
通過$GLOBAL_ROOT
所指的路徑可以通過加載不同的設置,但仍會解析器應該能夠查找在各自的文件位置後改。
我想在XML文件的xi:include
節點的href鏈接中使用環境變量。目前Perl XInclude解析器不支持任何變量,但只支持絕對路徑。有沒有一種方法可以解決這個問題? 例如,我的xi:include
節點將是這樣的:如何在xi中使用環境變量:包含XML文件?
<xi:include href="$GLOBAL_ROOT/alternative.xml">
通過$GLOBAL_ROOT
所指的路徑可以通過加載不同的設置,但仍會解析器應該能夠查找在各自的文件位置後改。
你在專門研究私有方法的不穩定地面上(用帶有下劃線的慣例表示),但作者可以通過提供更多的鉤子來提供幫助。假設你正在使用XML::Filter::XInclude
:
package MyXInclude::ExpandEnvironmentVars;
use warnings;
use strict;
our @ISA = qw/ XML::Filter::XInclude /;
sub _include_xml_document {
my($self,$url) = @_;
# expand environment variables if present
$url =~ s/\$(\w+)/$ENV{$1}/g;
$self->SUPER::_include_xml_document($url);
}
然後通過工廠的MyXInclude::ExpandEnvironmentVars
一個實例作爲Handler
參數。
爲什麼不使用符號鏈接(相對或絕對)?或用戶主目錄位置(〜/ .xml)?
<xi:include href="XML/alternative.xml">
<xi:include href="/XML/alternative.xml">
<xi:include href="~/.XML/alternative.xml">
哪個「perl XInclude parser」你在說什麼? – mirod 2010-01-15 13:13:43