使用XSLT在标记之外转换带有等号的文本

时间:2015-02-19 19:38:39

标签: xml xslt google-search-appliance

我正在尝试使用XSLT从GSA(Google Search Appliance)转换XML并收到以下错误:

  

XmlException:'='是一个意外的令牌。预期的标记是';'。

XML具有以下内容:

  

< NU>   ?/查询Q =测试和安培;站点= ActiveCases&安培; LR =&安培,即= UTF-8和; OE = UTF-8&安培;输出= xml_no_dtd&安培;客户= default_frontend&安培;获得= P&安培;排序=日期:d:L:D1&安培; getfields =%252A&安培;开始= 10安培; SA = N   < / NU>

如何处理标签外的等号?

1 个答案:

答案 0 :(得分:2)

导致问题的不是等号;它是&符号。尝试用&替换所有&符号。

错误的原因是&符号开始entity reference的开头。因此,在解析文本时,解析器会将&符号视为引用的开头。然后它期望实体名称(name characters)和分号结束引用。 =不是名称字符,并且它不是分号,因此会抛出错误。

您的另一个选择是将文本包装在CDATA部分中:

<NU><![CDATA[/search?q=Testing&site=ActiveCases&lr=&ie=UTF-8&oe=UTF-8&output=xml_no_dtd&client=default_frontend&access=p&sort=date:D:L:d1&getfields=%252a&start=10&sa=N]]></NU>