Saxon Processor为输入XML文件的href部分抛出异常

时间:2014-12-19 22:49:49

标签: xml xslt rss xslt-2.0 saxon

我正在使用Saxon Processor将一个巨大的XML文件(+7,000行)转换为RSS 2.0 XML文件。

我无法控制输入XML文件,它们是从服务器中提取的,我的XSL文件应该将其转换为RSS提要。

有时在输入XML文件中有一个包含 href 的元素,如此,

  <A href="https://www.google.com/maps/preview?q=tehran+iran&ie=UTF-8&hq=&hnear=0x3f8e00491ff3dcd9:0xf0b3697c567024bc,Tehran,+Iran&gl=us&ei=24iMU-jvFNLNsQTwi4DgAQ&ved=0CKsBELYDMBQ&source=newuser-ws">(map)</A>

撒克逊处理器并不喜欢这个字符串的某个部分。这是错误消息,

Error on line 837 column 62 of production.xml: SXXP0003: Error reported by XML parser: The reference to entity "ie" must end with the ';' delimiter. org.xml.sax.SAXParseException; systemId: file:/C:/XSLT/Test3/production.xml; lineNumber: 837; columnNumber: 62; The reference to entity "ie" must end with the ';' delimiter.

根据错误,处理器显示URL字符串中的 ie 参数与XML元素混淆。

有什么东西可以添加到RSS 2.0 XSL样式表中,它会告诉Saxon Processor跳过这些行吗?我实际上不需要<A>

中的信息
  <A href="https://www.google.com/maps/preview?q=tehran+iran&ie=UTF-8&hq=&hnear=0x3f8e00491ff3dcd9:0xf0b3697c567024bc,Tehran,+Iran&gl=us&ei=24iMU-jvFNLNsQTwi4DgAQ&ved=0CKsBELYDMBQ&source=newuser-ws">(map)</A>

所以,如果我可以完全跳过这些行,如果这样可以解决那个很好的错误。或者,如果它怀疑撒克逊处理器有一个错误而另一个处理器不会导致这个问题也很好(如果你可以推荐一个更合适的处理器)。

1 个答案:

答案 0 :(得分:2)

输入XML不合适。&必须转义。您可以通过将所有&替换为&amp;来更正输入。

此外,如果存在于XML中,您必须转义的其他字符是:

"&quot;

'&apos;

< &lt;

带有>

&gt;