部分XML解析给出元素未绑定的异常

时间:2017-09-05 12:17:17

标签: java xml xslt

我正在尝试使用DSpace XOAI库解析XML文档。这是输入XML:

<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
   ...
   <ListRecords>
      <record>
         <header>
            ...
         </header>
         <metadata>
            <crossref xmlns="http://www.crossref.org/xschema/1.1" xsi:schemaLocation="http://www.crossref.org/xschema/1.1 http://www.crossref.org/schema/unixref1.1.xsd">
               ...
            </crossref>
         </metadata>
      </record>
   </ListRecords>
</OAI-PMH>

从我可以从调试中推断出,每个元数据节点都由XOAI库单独解析。并且,在该上下文中,我得到此错误(这是有道理的,因为xsi名称空间在父OAI-PMH节点中定义):

ERROR: 'The prefix "xsi" for attribute "xsi:schemaLocation" associated with an element type "crossref" is not bound.'

对于我从库源代码中可以理解的内容,它使用Oracle java javax.xml.transform.Transformer进行转换。我们可以设置任何Transformer来执行。

我已经在使用XSLT文件以库所期望的格式转换输入XML。但是,我找不到在XSLT中创建规则的方法,以忽略导致错误的xsi:schemaLocation。

另一个选择是在Java中创建一个新的Transformer。我正在查看Transformer.setOutputProperty,但我无法在crossref节点中创建忽略此错误的工作配置。

你们知道如何在本地环境中正确解析crossref节点的内容吗?

提前致谢!

0 个答案:

没有答案