如果我想将文档加载到变量中,我可以使用
<xsl:variable name="var1" select="document('http://www.mySite.com/file1.xml')" />
=&GT;工作,我可以使用 -
<xsl:value-of select="$var1//myNodeName"/>
但现在我需要使用带参数的URL。 并且以下测试不起作用 -
<xsl:variable name="var2" select="document('http://www.mySite.com/getfile.cgi?param1=val1¶m2=val2')" />
=&GT;不起作用 - EntityRef:期待';'
<xsl:variable name="var2" select="document('http://www.mySite.com/getfile.cgi?param1=val1&param2=val2')" />
=&GT;不起作用 - 警告错误的URL - http://www.mySite.com/getfile.cgi?param1=val1¶m2=val2:1: 为什么要加:1:???
我的问题: 我如何更换&amp;实体使 document()功能起作用?
更新: 根据 - http://our.umbraco.org/forum/developers/xslt/5421-Ampersand-in-XSLT 解决方案是将URL存储为变量,然后输出disablig output escaping。 e.g。
<xsl:variable name="test" select="http://www.mysite.com/mypage.aspx?param1=1&param2=2" />
<xsl:value-of select="$test" disable-output-escaping="yes" />
但是,如何将此解决方案应用于document()参数?
更新2:
我使用PHP解析它 -
<?php
Header('Content-type: text/xml');
// http://php.net/manual/en/xsltprocessor.transformtoxml.php
$xml = new DOMDocument;
$xml->load('http://www.mySite.com/devices.xml');
$xsl = new DOMDocument;
$xsl->load('mergedocs.xsl');
// Configure the transformer
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl); // attach the xsl rules
echo $proc->transformToXML($xml);
?>
我得到的错误[请注意网址中的放大器]:
XML Parsing Error: junk after document element
Location: http://mySite/myPhpFile.php
Line Number 2, Column 1:<b>Warning</b>: XSLTProcessor::transformToXml() [<a href='xsltprocessor.transformtoxml'>xsltprocessor.transformtoxml</a>]:
http://siteIp/cgi-bin/getfile.cgi?p1=v1&p2=v2:1: parser error : Document is empty
in <b>/home/.../myPhpFile.php</b> on line <b>16</b><br />
答案 0 :(得分:0)
编码&amp;作为&amp; amp;是正确的方法,处理器检索的URL将是val1&amp; param2正确的URL。我怀疑:1:不是URL的一部分,而是警告信息的一部分,即::
的问题