文档功能中的&符号URL参数

时间:2013-05-28 07:58:53

标签: xslt

如果我想将文档加载到变量中,我可以使用

<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&param2=val2')" />

=&GT;不起作用 - EntityRef:期待';'

<xsl:variable name="var2" select="document('http://www.mySite.com/getfile.cgi?param1=val1&amp;param2=val2')" />

=&GT;不起作用 - 警告错误的URL -      http://www.mySite.com/getfile.cgi?param1=val1&param2=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&amp;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&amp;p2=v2:1: parser error : Document is empty 
in <b>/home/.../myPhpFile.php</b> on line <b>16</b><br />

1 个答案:

答案 0 :(得分:0)

  

编码&amp;作为&amp; amp;是正确的方法,处理器检索的URL将是val1&amp; param2正确的URL。我怀疑:1:不是URL的一部分,而是警告信息的一部分,即::

的问题