一起使用 targetNamespace 和 xmlns 是错误吗?
Is the using targetNamespace and xmlns together is an error?
我用以下 header 创建了一个 XSD。
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="https://github.com/geryxyz/binary-schema"
targetNamespace="https://github.com/geryxyz/binary-schema"
>
<xsd:complexType name="formatType">
<xsd:annotation>
<xsd:documentation xml:lang="en">
The root element for the binary file format specification.
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="type" type="typeType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
...
我还根据上面的XSD创建了一个示例XML。
<?xml version="1.0" encoding="UTF-8" ?>
<format xmlns="https://github.com/geryxyz/binary-schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://github.com/geryxyz/binary-schema binary-schema.xsd">
<type name="sdfsd">
<chunk length="23"/>
</type>
</format>
我的调查表明 XSD 中 xmlns
和 targetNamespace
的使用有些多余。
我使用 PyCharm 作为 IDE,它报告示例 XML 文件中的错误。
如果我从 XSD 中删除 xmlns
声明,错误就会消失。我想了解所发生事情背后的基本概念。它是 PyCharm 中的错误,还是 XSD 不良做法?
不,同时使用 targetNamespace
和 xmlns
本身并不是错误。
而且,不,从 XSD 中删除默认命名空间声明 (xmlns
) 将无法解决错误 1 – 无需进一步调整,它只会在 XSD 中产生错误,因为将不再找到引用的类型声明。
解决问题的最简单方法是添加
elementFormDefault="qualified"
到 XSD 的 xsd:schema
元素。
另见
- What does elementFormDefault do in XSD?
1 如果错误似乎从此操作中消失而没有引发另一个错误,则可能是配置问题、某种用户错误或 problem/limitation PyCharm.
我用以下 header 创建了一个 XSD。
<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="https://github.com/geryxyz/binary-schema"
targetNamespace="https://github.com/geryxyz/binary-schema"
>
<xsd:complexType name="formatType">
<xsd:annotation>
<xsd:documentation xml:lang="en">
The root element for the binary file format specification.
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="type" type="typeType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
...
我还根据上面的XSD创建了一个示例XML。
<?xml version="1.0" encoding="UTF-8" ?>
<format xmlns="https://github.com/geryxyz/binary-schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://github.com/geryxyz/binary-schema binary-schema.xsd">
<type name="sdfsd">
<chunk length="23"/>
</type>
</format>
我的调查表明 XSD 中 xmlns
和 targetNamespace
的使用有些多余。
我使用 PyCharm 作为 IDE,它报告示例 XML 文件中的错误。
如果我从 XSD 中删除 xmlns
声明,错误就会消失。我想了解所发生事情背后的基本概念。它是 PyCharm 中的错误,还是 XSD 不良做法?
不,同时使用 targetNamespace
和 xmlns
本身并不是错误。
而且,不,从 XSD 中删除默认命名空间声明 (xmlns
) 将无法解决错误 1 – 无需进一步调整,它只会在 XSD 中产生错误,因为将不再找到引用的类型声明。
解决问题的最简单方法是添加
elementFormDefault="qualified"
到 XSD 的 xsd:schema
元素。
另见
- What does elementFormDefault do in XSD?
1 如果错误似乎从此操作中消失而没有引发另一个错误,则可能是配置问题、某种用户错误或 problem/limitation PyCharm.