Xml cvc complex type.2.4.c:匹配的通配符是严格的,但是找不到元素';oai标识符';。如何解决这个问题?
我有,我想用它来验证来自OAI-PMH端点的XML响应。Xml cvc complex type.2.4.c:匹配的通配符是严格的,但是找不到元素';oai标识符';。如何解决这个问题?,xml,xsd,xsd-validation,saxparseexception,xml-error,Xml,Xsd,Xsd Validation,Saxparseexception,Xml Error,我有,我想用它来验证来自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
据说该模式已经过验证。
然而,当我尝试验证来自随机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>
我不知道为什么会发生这种情况,相关线程也没有帮助我。请帮帮我。尽管
xsd:any
基本上允许任何XML元素,但它的@processContents
属性给出了不同的严格性。在这种情况下,@processContents
是严格的
,这意味着任何定义的元素都可能出现在那里。您的错误消息表明它找不到oai标识符
元素的此类XSD定义。您可以通过执行以下操作之一修复此问题:
XSD:any/@processContents
更改为lax
或skip
李>
oai标识符定义的验证XML解析器访问
注意:我能够在不修改的情况下成功验证您发布的XML。我建议您再试一次,确保验证器可以访问每个必需的XSD(包括任何引用的XSD,可传递)。如果您有用于检索xsd的XML目录或其他重定向机制,请务必检查这些机制。尽管
xsd:any
基本上允许任何XML元素,但它的@processContents
属性给出了不同的严格性。在这种情况下,@processContents
是严格的
,这意味着任何定义的元素都可能出现在那里。您的错误消息表明它找不到oai标识符
元素的此类XSD定义。您可以通过执行以下操作之一修复此问题:
XSD:any/@processContents
更改为lax
或skip
李>
oai标识符定义的验证XML解析器访问
注意:我能够在不修改的情况下成功验证您发布的XML。我建议您再试一次,确保验证器可以访问每个必需的XSD(包括任何引用的XSD,可传递)。如果您有用于检索XSD的XML目录或其他重定向机制,请务必检查它们。我明白了,谢谢。所以有问题的元素是
下的
,对吗?由于我不精通XML标记,您能告诉我如何执行1和3吗?是的,@processContents
的默认值是strict
。健全性检查:将oai标识符
替换为您知道在可访问的XSD中定义的元素,例如,repositoryName
。然后尝试重新验证。我不确定我是否在跟踪你。我该怎么做<代码>repositoryName已在XML响应中。顺便说一句,我在我的项目中将这个静态XSD模式作为一个文件使用;而不是oai标识符
。很抱歉,我们已经从Q/A过渡到诊断,这需要更多的来回操作,不适合在这里进行。您的问题的基本答案是,您的XML对链接的XSD是有效的。我已经解释了xsd:any/@processContents
的含义,并建议您进一步研究与该约束和管理xsd的可访问性相关的几个选项。祝你好运。我明白了,谢谢。所以有问题的元素是
下的
,对吗?由于我不精通XML标记,您能告诉我如何执行1和3吗?是的,@processContents
的默认值是strict
。健全性检查:将oai标识符
替换为您知道在可访问的XSD中定义的元素,例如,repositoryName
。然后尝试重新验证。我不确定我是否在跟踪你。我该怎么做<代码>repositoryName已在XML响应中。顺便说一句,我在我的项目中将这个静态XSD模式作为一个文件使用;而不是oai标识符
。很抱歉,我们已经从Q/A过渡到诊断,这需要更多的来回操作,不适合在这里进行。您的问题的基本答案是,您的XML对链接的XSD是有效的。我已经解释了xsd:any/@processContents
的含义,并建议您进一步研究与该约束和管理xsd的可访问性相关的几个选项。祝你好运