代码之家  ›  专栏  ›  技术社区  ›  dtc

这个xsd导入命名空间用于什么?

  •  9
  • dtc  · 技术社区  · 14 年前

    我有一个xsd文档,开头是:

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <xs:import namespace="http://www.w3.org/XML/1998/namespace"     schemaLocation="http://www.w3.org/2001/xml.xsd"/>
        <xs:complexType name="T_segment">
            <xs:sequence>
                <xs:element ref="element" maxOccurs="unbounded"/>
            </xs:sequence>
            <xs:attribute ref="xml:space" use="required"/>
            <xs:attribute ref="id" use="required"/>
        </xs:complexType>
    ...
    

    当我试图在类似biztalk的映射应用程序中使用这个xsd时,它会爆发出对名称空间的抱怨。因此,我删除xs:import名称空间标记,它抱怨xs:attribute ref=“xml:space”标记。所以,我移除了它,它看起来工作正常(至少不会爆炸)。

    我的问题是,那些标签是做什么用的?通过移除它们,我是否破坏了xsd?

    据我所知,名称空间是为了避免冲突。但在xsd中,所有内容都以xs为前缀,模式本身具有xmlns:xs=“http://www.w3.org/2001/xmlschema”。我不知道那进口是干什么用的。

    1 回复  |  直到 10 年前
        1
  •  8
  •   Tim Bezhashvyly    10 年前

    这个 <xs:import /> 元素将XML命名空间导入架构。导入的命名空间包含“space”属性的定义。这个 <xs:attribute ref="xml:space" use="required"/> bit通过从导入的模式中引用定义“t_segment”复杂类型所需的“space”属性(即,这样就不必重写定义)。space属性本质上使您能够定义 whitespace is significant for the element or not .

    现在,取决于应用程序 可以 因为实际上您正在从复杂类型中移除一个约束,该约束可能与使用此架构描述的文档的应用程序相关。在不了解更多应用程序的情况下,很难说这对您的情况是否重要。