我发现一些文件生成错误消息,现在我想修复这些错误。我如何修复下面的错误?
如果我这样做
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
测试。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>
错误信息非常清楚
未绑定与元素类型"CNDB"相关联的属性"dt:dt"的前缀"dt"。
您的输入XML不是名称空间格式良好的,因为CNDB
元素有一个名为dt:dt
的属性,但在CNDB
或其祖先之一上没有xmlns:dt="..."
。
正如@Ian在他的回答中所写,这个问题是由mediainfo
生成无效的XML
引起的。这个问题已经报告了,但是由于缺乏具有足够XML技能的开发人员来解决这个问题,这个问题似乎不会很快得到解决。
我现在的"解决方案"是使用sed
修复输出,如下所示:
mediainfo --Output=XML 7483.MOV | sed -e 's#<CNDB dt:dt=#<CNDB dt=#g' >data.xml