为什么 xmlns 属性不适用于 Visual Studio 的 XML 编辑器中的子元素?

问题描述 投票:0回答:1

如您所见,除了“非工作”和“工作”版本之外,唯一的区别(左)是到处都使用“this”前缀。

默认命名空间

xmlns
属性的全部意义不是为了避免这个确切的问题吗?

我在这里做错了什么吗?

根据要求这里是 XSD 作为代码:

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema
    targetNamespace="Ember.Graphics.OpenGL"
    elementFormDefault="qualified"
    attributeFormDefault="qualified"

    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    
    xmlns="Ember.Graphics.OpenGL"
>
    <xsd:element name="UniformBlock">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="BlockMember" minOccurs="0" maxOccurs="unbounded">
                    <xsd:complexType>
                        <xsd:attribute name="type" use="required" type="Types"/>
                        <xsd:attribute name="name" use="required" type="xsd:string"/>
                    </xsd:complexType>
                </xsd:element>
            </xsd:sequence>
            <xsd:attribute name="name" use="required" type="xsd:string"/>
            <xsd:attribute name="instanceName" use="optional" type="xsd:string"/>
            <xsd:attribute name="layout" use="optional" type="xsd:string"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:simpleType name="Types">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="mat4"/>
            <xsd:enumeration value="mat3"/>
            <xsd:enumeration value="vec3"/>
            <xsd:enumeration value="vec4"/>
            <xsd:enumeration value="float"/>
        </xsd:restriction>
    </xsd:simpleType>
</xsd:schema>

“工作”XML(略有改动):

<?xml version="1.0" encoding="utf-8"?>
<x:UniformBlock
    xmlns:x="Ember.Graphics.OpenGL"
>
    <x:BlockMember
        x:type="mat4"
        x:name="WorldToCamera"
    />
</x:UniformBlock>
visual-studio xsd
1个回答
0
投票

我认为您的示例或您的期望中的一个错误是使用 attributeFormDefault="qualified" 以及在默认命名空间示例中使用无前缀的属性;默认命名空间声明适用于元素但不适用于属性。

因此,根据您的需要/要求,您想要删除

attributeFormDefault="qualified"
或者您需要确保,如果您希望您的属性位于(目标)命名空间中,那么您的 XML 示例中的属性名称的前缀带有前缀绑定到命名空间。

© www.soinside.com 2019 - 2024. All rights reserved.