首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不能在此模式中引用"Namespace 'http://www.w3.org/XML/1998/namespace‘“?

为什么不能在此模式中引用"Namespace 'http://www.w3.org/XML/1998/namespace‘“?
EN

Stack Overflow用户
提问于 2010-12-10 02:48:12
回答 1查看 20.1K关注 0票数 13

在查看Visual 2010中的stanzaerror.xsd http://xmpp.org/schemas/时,我在下面的一行中得到了一个警告.

代码语言:javascript
复制
<xs:attribute ref='xml:lang' use='optional'/>

警告:

命名空间“http://www.w3.org/XML/1998/namespace”不可在此架构中引用。

这似乎是一个非常基本的XML警告--有什么想法吗?

代码语言:javascript
复制
<?xml version='1.0' encoding='UTF-8'?>    
<xs:schema
    xmlns:xs='http://www.w3.org/2001/XMLSchema'
    targetNamespace='urn:ietf:params:xml:ns:xmpp-stanzas'
    xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'
    elementFormDefault='qualified'>

  <xs:element name='bad-request' type='empty'/>
  <xs:element name='conflict' type='empty'/>
  <xs:element name='feature-not-implemented' type='empty'/>
  <xs:element name='forbidden' type='empty'/>
  <xs:element name='gone' type='xs:string'/>
  <xs:element name='internal-server-error' type='empty'/>
  <xs:element name='item-not-found' type='empty'/>
  <xs:element name='jid-malformed' type='empty'/>
  <xs:element name='not-acceptable' type='empty'/>
  <xs:element name='not-allowed' type='empty'/>
  <xs:element name='not-authorized' type='empty'/>
  <xs:element name='payment-required' type='empty'/>
  <xs:element name='policy-violation' type='empty'/>
  <xs:element name='recipient-unavailable' type='empty'/>
  <xs:element name='redirect' type='xs:string'/>
  <xs:element name='registration-required' type='empty'/>
  <xs:element name='remote-server-not-found' type='empty'/>
  <xs:element name='remote-server-timeout' type='empty'/>
  <xs:element name='resource-constraint' type='empty'/>
  <xs:element name='service-unavailable' type='empty'/>
  <xs:element name='subscription-required' type='empty'/>
  <xs:element name='undefined-condition' type='empty'/>
  <xs:element name='unexpected-request' type='empty'/>

  <xs:group name='stanzaErrorGroup'>
    <xs:choice>
      <xs:element ref='bad-request'/>
      <xs:element ref='conflict'/>
      <xs:element ref='feature-not-implemented'/>
      <xs:element ref='forbidden'/>
      <xs:element ref='gone'/>
      <xs:element ref='internal-server-error'/>
      <xs:element ref='item-not-found'/>
      <xs:element ref='jid-malformed'/>
      <xs:element ref='not-acceptable'/>
      <xs:element ref='not-authorized'/>
      <xs:element ref='not-allowed'/>
      <xs:element ref='payment-required'/>
      <xs:element ref='policy-violation'/>
      <xs:element ref='recipient-unavailable'/>
      <xs:element ref='redirect'/>
      <xs:element ref='registration-required'/>
      <xs:element ref='remote-server-not-found'/>
      <xs:element ref='remote-server-timeout'/>
      <xs:element ref='resource-constraint'/>
      <xs:element ref='service-unavailable'/>
      <xs:element ref='subscription-required'/>
      <xs:element ref='undefined-condition'/>
      <xs:element ref='unexpected-request'/>
    </xs:choice>
  </xs:group>

  <xs:element name='text'>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base='xs:string'>
          <xs:attribute ref='xml:lang' use='optional'/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>    

  <xs:simpleType name='empty'>
    <xs:restriction base='xs:string'>
      <xs:enumeration value=''/>
    </xs:restriction>
  </xs:simpleType>    
</xs:schema>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-10 11:53:04

仅仅因为不需要声明xml名称空间(例如文档),并不意味着模式也是如此。我知道这听起来有点奇怪,但就是这样。您需要定义xml:lang属性,并且需要声明xml命名空间。通常,我使用一个导入到我的模式中的简单模式。使用W3C提供了中的一个。

导入该名称空间,声明命名空间。一切都会好的

代码语言:javascript
复制
<xs:schema
    xmlns:xs='http://www.w3.org/2001/XMLSchema'
    xmlns:xml="http://www.w3.org/XML/1998/namespace" 
    targetNamespace='urn:ietf:params:xml:ns:xmpp-stanzas'
    xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'
    elementFormDefault='qualified'>

    <xs:import schemaLocation="http://www.w3.org/2001/xml.xsd" namespace="http://www.w3.org/XML/1998/namespace"/>

    <xs:element name='bad-request' type='empty'/>
    <xs:element name='conflict' type='empty'/>
    <xs:element name='feature-not-implemented' type='empty'/>
    <xs:element name='forbidden' type='empty'/>
    <xs:element name='gone' type='xs:string'/>
    <xs:element name='internal-server-error' type='empty'/>
    <xs:element name='item-not-found' type='empty'/>
    <xs:element name='jid-malformed' type='empty'/>
    <xs:element name='not-acceptable' type='empty'/>
    <xs:element name='not-allowed' type='empty'/>
    <xs:element name='not-authorized' type='empty'/>
    <xs:element name='payment-required' type='empty'/>
    <xs:element name='policy-violation' type='empty'/>
    <xs:element name='recipient-unavailable' type='empty'/>
    <xs:element name='redirect' type='xs:string'/>
    <xs:element name='registration-required' type='empty'/>
    <xs:element name='remote-server-not-found' type='empty'/>
    <xs:element name='remote-server-timeout' type='empty'/>
    <xs:element name='resource-constraint' type='empty'/>
    <xs:element name='service-unavailable' type='empty'/>
    <xs:element name='subscription-required' type='empty'/>
    <xs:element name='undefined-condition' type='empty'/>
    <xs:element name='unexpected-request' type='empty'/>

    <xs:group name='stanzaErrorGroup'>
        <xs:choice>
            <xs:element ref='bad-request'/>
            <xs:element ref='conflict'/>
            <xs:element ref='feature-not-implemented'/>
            <xs:element ref='forbidden'/>
            <xs:element ref='gone'/>
            <xs:element ref='internal-server-error'/>
            <xs:element ref='item-not-found'/>
            <xs:element ref='jid-malformed'/>
            <xs:element ref='not-acceptable'/>
            <xs:element ref='not-authorized'/>
            <xs:element ref='not-allowed'/>
            <xs:element ref='payment-required'/>
            <xs:element ref='policy-violation'/>
            <xs:element ref='recipient-unavailable'/>
            <xs:element ref='redirect'/>
            <xs:element ref='registration-required'/>
            <xs:element ref='remote-server-not-found'/>
            <xs:element ref='remote-server-timeout'/>
            <xs:element ref='resource-constraint'/>
            <xs:element ref='service-unavailable'/>
            <xs:element ref='subscription-required'/>
            <xs:element ref='undefined-condition'/>
            <xs:element ref='unexpected-request'/>
        </xs:choice>
    </xs:group>

    <xs:element name='text'>
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base='xs:string'>
                    <xs:attribute ref='xml:lang' use='optional'/>
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>

    <xs:simpleType name='empty'>
        <xs:restriction base='xs:string'>
            <xs:enumeration value=''/>
        </xs:restriction>
    </xs:simpleType>

</xs:schema>

我不太熟悉XMPP,但我怀疑您的模式是打算导入到另一个已经声明了XML命名空间的地方。

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

https://stackoverflow.com/questions/4405223

复制
相关文章

相似问题

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