如何修复SXXP0003:XML解析器报告的错误:与元素类型“CNDB”关联的属性“dt:dt”的前缀“dt”未绑定

时间:2013-03-01 14:58:25

标签: xml xslt saxon

我发现了一些生成错误消息的文件,现在我想修复错误。如何解决以下错误?

如果我这样做

mediainfo --Output=XML 7483.MOV >data.xml

然后我编辑文件并删除许多不需要产生错误的行,然后

java -jar /opt/local/share/java/saxon9he.jar data.xml test.xsl

我收到错误:

Error on line 2 column 29 of data.xml:
SXXP0003: Error reported by XML parser: The prefix "dt" for attribute "dt:dt" associated
with an element type "CNDB" is not bound.
Transformation failed: Run-time errors were reported

test.xsl包含:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:fmp="http://www.filemaker.com/fmpxmlresult" exclude-result-prefixes="fmp date redirect"
    xmlns:saxon="http://icl.com/saxon"
    xmlns:date="http://www.jclark.com/xt/java/java.util.Date"
    xmlns:redirect="http://xml.apache.org/xalan/redirect"
    xmlns:lxslt="http://xml.apache.org/xslt"
    xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="binary.base64"
    xmlns:xalan="org.apache.xalan.xslt.extension.redirect"
    extension-element-prefixes="saxon xalan redirect dt">
</xsl:stylesheet>

data.xml包含:

<?xml version="1.0" encoding="UTF-8"?>
<CNDB dt:dt="binary.base64">Q00WIUNNFiFDTRYhQ00WIUNNFiFDTRYhQ00WIUNNFiFDTRYhQ00WIUNNFiFDTRYhQ00WIUNNFiFDTRYhQ00WIUNNFiFDTRYhQ00WIUNNFiFDTRYhQ00WIUNNFiFDTRYhQ00W
IUNNFiFDTRYhQ00WIUNNFiFDTRYhQ00WIUNNFiFDTRYhQ00WIUNNFiFDTRYhQ00WIUNNFiFDTRYhQ00WIUNNFiFDTRYhQ00WIUNNFiFDTRYhQ00WIUNNFiFDTRYhQ00WIUNNFiFDTRYhQ00WIUNNFiFDTRYhQ00W
IT1NFiE9TRYhPU0WIT1NFiE9TRYhPU0WIT1NFiE9TRYhPU0WIT1NFiE9TRYhPU0WIT1NFiE9TRYhPU0WIT1NFiE9TRYhPU0WIT1NFiE9TRYhPU0WIT1NFiE9</CNDB>

2 个答案:

答案 0 :(得分:1)

错误信息非常清楚

  

与元素类型“CNDB”关联的属性“dt:dt”的前缀“dt”未绑定。

您的输入XML不是名称空间良好的,因为CNDB元素具有名为dt:dt的属性,但xmlns:dt="..."上没有CNDB或其中一个它的祖先。

答案 1 :(得分:0)

正如@Ian在他的回答中写道,这个问题是由mediainfo生成无效XML引起的。已报告此问题,但由于缺乏具有足够XML技能的开发人员来解决问题,似乎问题不会很快得到解决。

我现在的“解决方案”是使用sed修复输出,如下所示:

mediainfo --Output=XML 7483.MOV | sed -e 's#<CNDB dt:dt=#<CNDB dt=#g' >data.xml