cvc-complex-type.2.4.c: 匹配的通配符是严格的,但是找不到元素'oai-identifier'的声明。如何解决这个问题?
cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'oai-identifier'. How to fix this?
我有 the static XSD schema,我想用它来验证来自 OAI-PMH 端点的 XML 响应。
据说架构已经过验证。
然而,当我尝试验证来自随机 OAI-PMH 端点的 XML 响应时,例如这个:
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="static/style.xsl"?>
<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">
<responseDate>2019-07-29T13:29:04Z</responseDate>
<request verb="Identify">https://repository.lib.ncsu.edu/oai/driver</request>
<Identify>
<repositoryName>NCSU Repository</repositoryName>
<baseURL>https://repository.lib.ncsu.edu/oai/driver</baseURL>
<protocolVersion>2.0</protocolVersion>
<adminEmail>kdbeswic@ncsu.edu</adminEmail>
<earliestDatestamp>2006-11-10T15:53:37Z</earliestDatestamp>
<deletedRecord>transient</deletedRecord>
<granularity>YYYY-MM-DDThh:mm:ssZ</granularity>
<description>
<oai-identifier xmlns="http://www.openarchives.org/OAI/2.0/oai-identifier"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai-identifier http://www.openarchives.org/OAI/2.0/oai-identifier.xsd">
<scheme>oai</scheme>
<repositoryIdentifier>repository.lib.ncsu.edu</repositoryIdentifier>
<delimiter>:</delimiter>
<sampleIdentifier>oai:repository.lib.ncsu.edu:1840.20/1234</sampleIdentifier>
</oai-identifier>
</description>
</Identify>
</OAI-PMH>
我得到这个异常:
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1055; cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'oai-identifier'.
....
我不知道为什么会这样,相关话题也没有帮助我。请帮助我。
虽然 xsd:any
基本上允许 any XML 元素,但它的 @processContents
属性给出了严格的变化。在这种情况下,@processContents
是 strict
,这意味着任何 defined 元素都可能出现在那里。您的错误消息表明它找不到 oai-identifier
元素的 XSD 定义。您可以通过执行以下操作之一解决此问题:
- 更改 XML 以在该位置显示定义的元素;
- 将 XSD
xsd:any/@processContents
更改为 lax
或 skip
;
- 提供验证 XML 解析器访问
oai-identifier
的定义。
另请参阅: processContents strict vs lax vs skip for xsd:any
注意: 我能够在未修改的情况下成功验证您发布的 XML。我建议您再试一次,确保验证器可以访问每个必需的 XSDs(包括任何引用的 XSDs,可传递)。如果您有 XML 目录或其他用于检索 XSD 的重定向机制,请务必也检查它们。
我有 the static XSD schema,我想用它来验证来自 OAI-PMH 端点的 XML 响应。
据说架构已经过验证。
然而,当我尝试验证来自随机 OAI-PMH 端点的 XML 响应时,例如这个:
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="static/style.xsl"?>
<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">
<responseDate>2019-07-29T13:29:04Z</responseDate>
<request verb="Identify">https://repository.lib.ncsu.edu/oai/driver</request>
<Identify>
<repositoryName>NCSU Repository</repositoryName>
<baseURL>https://repository.lib.ncsu.edu/oai/driver</baseURL>
<protocolVersion>2.0</protocolVersion>
<adminEmail>kdbeswic@ncsu.edu</adminEmail>
<earliestDatestamp>2006-11-10T15:53:37Z</earliestDatestamp>
<deletedRecord>transient</deletedRecord>
<granularity>YYYY-MM-DDThh:mm:ssZ</granularity>
<description>
<oai-identifier xmlns="http://www.openarchives.org/OAI/2.0/oai-identifier"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai-identifier http://www.openarchives.org/OAI/2.0/oai-identifier.xsd">
<scheme>oai</scheme>
<repositoryIdentifier>repository.lib.ncsu.edu</repositoryIdentifier>
<delimiter>:</delimiter>
<sampleIdentifier>oai:repository.lib.ncsu.edu:1840.20/1234</sampleIdentifier>
</oai-identifier>
</description>
</Identify>
</OAI-PMH>
我得到这个异常:
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1055; cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'oai-identifier'.
....
我不知道为什么会这样,相关话题也没有帮助我。请帮助我。
虽然 xsd:any
基本上允许 any XML 元素,但它的 @processContents
属性给出了严格的变化。在这种情况下,@processContents
是 strict
,这意味着任何 defined 元素都可能出现在那里。您的错误消息表明它找不到 oai-identifier
元素的 XSD 定义。您可以通过执行以下操作之一解决此问题:
- 更改 XML 以在该位置显示定义的元素;
- 将 XSD
xsd:any/@processContents
更改为lax
或skip
; - 提供验证 XML 解析器访问
oai-identifier
的定义。
另请参阅: processContents strict vs lax vs skip for xsd:any
注意: 我能够在未修改的情况下成功验证您发布的 XML。我建议您再试一次,确保验证器可以访问每个必需的 XSDs(包括任何引用的 XSDs,可传递)。如果您有 XML 目录或其他用于检索 XSD 的重定向机制,请务必也检查它们。