0

在尝试将 html 文档解析为 XML(从开头添加 xml)时,我遇到了标签内属性的问题。

<tr>
<td class="yfnc_tabledata1" nowrap align="right">Jun 4, 2013</td>
<td class="yfnc_tabledata1" align="right">453.22</td>
<td class="yfnc_tabledata1" align="right">454.43</td>
<td class="yfnc_tabledata1" align="right">447.39</td>
<td class="yfnc_tabledata1" align="right">449.31</td>
<td class="yfnc_tabledata1" align="right">10,454,600</td>
<td class="yfnc_tabledata1" align="right">449.31</td>
</tr> 

虽然通常没关系(因为我的 xslt 代码实际上并没有引用它),但我收到了一个错误:

ERROR:  'Attribute name "nowrap" associated with an element type "td" must be followed by the ' = ' character.'
ERROR:  'com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: Attribute name "nowrap" associated with an element type "td" must be followed by the ' = ' character.'

所以我想知道是否有办法让它抑制/忽略这些错误。(寻找一种不涉及单独解析的方法,该方法将首先删除所有 nowrap 。)

(供参考,xml:http ://pastebin.com/TLD4bZkq,xslt: http: //pastebin.com/dPzDzeAX

4

1 回答 1

2

您尝试处理的数据不是 XML,因此 XML 解析器产生错误是正确的。

根据您使用的 XSLT 处理器以及调用方式,您可能能够使用 HTML 解析器而不是 XML 解析器将 HTML 解析为 DOM 树,然后将其传递给 XSLT 处理器,而不是让处理器解析文件本身。

但请记住,XSLT 需要命名空间格式良好的 XML,如果解析器的输出不符合此要求,那么您将遇到问题。例如,在 Java(这是我最熟悉的)中,要让 XSLT 使用 DOM 文档,它必须是由命名空间感知解析器生成的,即使相关文档实际上没有使用任何命名空间.

于 2013-06-07T16:38:23.383 回答