首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >属性'xsi:noNamespaceSchemaLocation‘不允许出现在元素'VAST’中

属性'xsi:noNamespaceSchemaLocation‘不允许出现在元素'VAST’中
EN

Stack Overflow用户
提问于 2016-04-19 12:02:56
回答 2查看 6.8K关注 0票数 6

我有大量的XML,并根据浩瀚的2.0.1xsd验证它。它抛出以下错误:

属性'xsi:noNamespaceSchemaLocation‘不允许出现在元素'VAST’中

我的庞大XML:-

代码语言:javascript
复制
<VAST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      version="2.0" 
      xsi:noNamespaceSchemaLocation="vast.xsd">
  <Ad id="11267375">
    <InLine>
      <AdSystem version="1.0">Sample vast</AdSystem>
      <AdTitle><![CDATA[AD_NFM3122HD.mov]]></AdTitle>
      <Description><![CDATA[<p>&nbsp;</p>]]></Description>
      <Creatives>
        <Creative sequence="1" AdID="" id="11267375">
          <Linear>
            <Duration>00:00:15</Duration>
          </Linear>
        </Creative>
      </Creatives>
    </InLine>
  </Ad>
</VAST>

海量2.0.1.xsd - 2.0.1.xsd

当我从庞大的Xml中删除xsi:noNamespaceSchemaLocation="vast.xsd">时。工作得很好。

我是否需要明确地使用这个xsi:noNamespaceSchemaLocation="vast.xsd">。它有什么用?

我必须在其中使用的XSD文件名是什么而不是"vast.xsd“?

我在java1.8上运行,下面是我的堆栈跟踪

代码语言:javascript
复制
org.xml.sax.SAXParseException; cvc-complex-type.3.2.2: Attribute 'xsi:noNamespaceSchemaLocation' is not allowed to appear in element 'VAST'.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:452)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3230)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.processAttributes(XMLSchemaValidator.java:2707)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:2050)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:740)
    at com.sun.org.apache.xerces.internal.jaxp.validation.DOMValidatorHelper.beginNode(DOMValidatorHelper.java:277)
    at com.sun.org.apache.xerces.internal.jaxp.validation.DOMValidatorHelper.validate(DOMValidatorHelper.java:244)
    at com.sun.org.apache.xerces.internal.jaxp.validation.DOMValidatorHelper.validate(DOMValidatorHelper.java:190)
    at com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorImpl.validate(ValidatorImpl.java:109)
    at javax.xml.validation.Validator.validate(Validator.java:124)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.rules.Verifier$1.evaluate(Verifier.java:35)
    at org.junit.rules.RunRules.evaluate(RunRules.java:20)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:48)
    at org.junit.rules.RunRules.evaluate(RunRules.java:20)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.junit.runners.Suite.runChild(Suite.java:127)
    at org.junit.runners.Suite.runChild(Suite.java:26)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
    at org.apache.maven.surefire.junitcore.JUnitCoreWrapper.execute(JUnitCoreWrapper.java:62)
    at org.apache.maven.surefire.junitcore.JUnitCoreProvider.invoke(JUnitCoreProvider.java:139)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
    at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
    at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
    at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:103)
    at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:74)
EN

回答 2

Stack Overflow用户

发布于 2016-04-19 12:40:34

下面是修复后的XML对vast.xsd的有效性,我已经远程引用了该XML:

代码语言:javascript
复制
<VAST xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      version="2.0" 
      xsi:noNamespaceSchemaLocation="https://raw.githubusercontent.com/chrisdinn/vast/master/lib/vast_2.0.1.xsd">
  <Ad id="11267375">
    <InLine>
      <AdSystem version="1.0">Sample vast</AdSystem>
      <AdTitle><![CDATA[AD_NFM3122HD.mov]]></AdTitle>
      <Description><![CDATA[<p>&nbsp;</p>]]></Description>
      <Survey/>
      <Error/>
      <Impression/>
      <Creatives>
        <Creative sequence="1" AdID="" id="11267375">
          <Linear>
            <Duration>00:00:15</Duration>
          </Linear>
        </Creative>
      </Creatives>
    </InLine>
  </Ad>
</VAST>

我已经添加了XSD所需的一些元素,但是即使没有这样的添加,您也不应该收到错误的抱怨

属性'xsi:noNamespaceSchemaLocation‘不允许出现在元素'VAST’中

如果您仍然收到上述XML中的错误,请发表评论,说明错误来源的软件。

更新:仍然不工作?

如果要在Java代码中指定XSD的位置,

代码语言:javascript
复制
Schema schema = schemaFactory.newSchema(new URL(getSchemaURLString()));

但是,您希望使用xsi:noNamespaceSchemaLocation,尝试删除XSD位置的基于Java的规范:

代码语言:javascript
复制
Schema schema = schemaFactory.newSchema();
票数 1
EN

Stack Overflow用户

发布于 2020-04-12 13:36:35

这件事曾经发生在我身上,因为在

代码语言:javascript
复制
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

我写的是http//而不是http://。这意味着当验证器找不到我所引用的命名空间时引发错误,因此无法验证xsi:noNamespaceSchemaLocation属性(因为它也在xsi中)。

如果名称空间url是正确的(在xml中它看起来确实是正确的),那么它可能意味着它找不到它的版本。

我可能会删除version属性(我不知道是否有2.0版本),确认版本号是正确的,或者在这种情况下使用xsi:version作为可能的尝试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36717793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档